我已经尝试了其他一些类似的帖子,但是仍然出现错误。

在帖子模型中,我有一个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模型的最佳属性名称。为什么不将其命名为namepost.category.name似乎比post.category.categoryname好很多,您不觉得吗?

10-06 01:10