Rails - 一个视图中有 2 个模型(属于另一个模型的模型)
Posted
技术标签:
【中文标题】Rails - 一个视图中有 2 个模型(属于另一个模型的模型)【英文标题】:Rails - 2 models in one view (of model that belongs_to another) 【发布时间】:2013-10-01 19:30:42 【问题描述】:对此有几个问题和答案,除了每次模型视图使用的与我需要的相反。
就我而言,我想在一个视图中显示 3 个模型。
Post belongs_to Username
,Username has_many Posts
。我拥有的第三个模型是Category has_many Posts
,它通过集合选择正确显示。
视图是 Post 模型,_form.html.erb
<%= form_for(@post) do |f| %>
<%= f.label :equipment %><br />
<%= f.text_field :equipment %><br />
<%= f.label 'Serial number' %><br />
<%= f.text_field :serial_num %><br />
<%= f.label :category %><br />
<%= collection_select(:post, :category_id, Category.all, :id, :name, prompt: true) %>
<%= f.fields_for :usernames do |user| %>
<%= user.label :username %><br />
<%= user.text_field :name %>
<% end %>
<% end %>
这就是我想要做的 - 显示 username.name(在帖子中我有 FK username_id)。上面的代码fields_for
不起作用,它什么也不显示。
我找到的关于这个问题的所有答案都在has_many
模型的视图中,而我在belongs_to
模型的视图中需要这个。那么,如何在帖子视图中访问拥有多个帖子的用户名模型的名称属性? (目前我只能访问 Post 模型中的外键)。
post.rb
class Post < ActiveRecord::Base
attr_accessible :category_id, :equipment, :serial_num, :username_id
belongs_to :category
belongs_to :username
validates :username_id, :presence => true
end
用户名.rb
class Username < ActiveRecord::Base
attr_accessible :name
has_many :posts
validates :name, :presence => true
end
routes.rb
resources :usernames
resources :categories
resources :posts
请帮忙!
【问题讨论】:
试试f.fields_for :username
首先,我有一个错误,我更正了(在我上面写的代码中是正确的),我按照您的建议更改为 :username。现在它给了我错误“无法批量分配受保护的属性:用户名”
【参考方案1】:
accepts_nested_attributes_for :username
在你的 post.rb 中
但是你不希望帖子自动分配给 current_user????
【讨论】:
以上是关于Rails - 一个视图中有 2 个模型(属于另一个模型的模型)的主要内容,如果未能解决你的问题,请参考以下文章