在 has_many 视图表中显示名称而不是 ID [英] Show name instead of ID in has_many view table

查看:36
本文介绍了在 has_many 视图表中显示名称而不是 ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经尝试了其他几个类似的帖子,但仍然出现错误.

I have tried a couple other similar posts but am still getting an error.

在 Posts 模型中,我有一个 category_id 字段.我有以下型号:

In the Posts model I have a category_id field. I have the following models:

#Posts model
belongs_to :categories  

#Category model
has_many :posts

在我的帖子索引控制器中:

In the Posts index controller I have:

@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 %>

在第二列中,我试图显示类别表中的类别名称(类别名称"),而不是帖子表中的 category_id.我收到一个错误:

In the 2nd column I am trying to show the category name ("categoryname") from the Category table instead of the category_id from the posts table. I am getting an error:

#ActiveRecord::Relation:0x3e1a9b0 的未定义方法`Category'>

undefined method `Category' for #ActiveRecord::Relation:0x3e1a9b0>

我也试过:

<td><%= post.categories.categoryname %></td>

但得到同样的错误.

还有:

<td><%= post.category.categoryname %></td>

任何建议将不胜感激.

推荐答案

在你的模型中

belongs_to :category

在你看来

<td><%= post.category.categoryname %></td>

您可以去掉控制器中的 @categories =

You can get rid of the @categories = line in your controller

此外,类别名称可能不是您的类别模型的最佳属性名称.为什么不直接将其命名为 name.post.category.name 似乎比 post.category.categoryname 好很多,你不觉得吗?

Also, categoryname is probably not the best attribute name for your Category model. Why not just name it name. post.category.name seems a lot better than post.category.categoryname, don't you think?

这篇关于在 has_many 视图表中显示名称而不是 ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆