我已经尝试了其他一些类似的帖子,但是仍然出现错误。
在帖子模型中,我有一个category_id字段。我有以下型号:
#Posts model
belongs_to :categories
#Category model
has_many :posts
在Posts索引控制器中,我有:
@categories = @posts.Category.find(:all, :order => 'categoryname')
在视图中,我有:
<% @posts.each do |post| %>
<tr>
<td><%= post.category_id %></td>
<td><%= @categories.categoryname %></td>
<td><%= link_to 'View', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
</tr>
<% end %>
在第二列中,我试图显示“类别”表中的类别名称(“ categoryname”),而不是职位表中的category_id。我收到一个错误:
#ActiveRecord :: Relation:0x3e1a9b0>的未定义方法'Category'
我也尝试过:
<td><%= post.categories.categoryname %></td>
但是得到同样的错误。
以及:
<td><%= post.category.categoryname %></td>
任何建议将不胜感激。
最佳答案
在您的模型中
belongs_to :category
在您看来
<td><%= post.category.categoryname %></td>
您可以摆脱控制器中的
@categories =
行另外,categoryname可能不是您的Category模型的最佳属性名称。为什么不将其命名为
name
。 post.category.name
似乎比post.category.categoryname
好很多,您不觉得吗?