Rails:如何访问视图中的belongs_to字段?

时间:2012-11-21 14:08:15

标签: ruby-on-rails activerecord

鉴于下面的MVC结构,我如何访问:category?我将其添加到attr_accessible列表并重新启动服务器,但调用p.category仍然不返回任何内容。我相信你的Rails专家会知道发生了什么。提前谢谢!

模型

class Product < ActiveRecord::Base
  belongs_to :category
  belongs_to :frame
  belongs_to :style
  belongs_to :lenses
  attr_accessible :description, :price
end

查看

<% @product.each do |p| %>
<%= p.category %>
<% end %>

控制器

def sunglass
  @product = Product.all
end

2 个答案:

答案 0 :(得分:4)

您需要指定要显示的categories表的哪一列。例如,名为name的列:

<% @product.each do |p| %>
 <%= p.category.name %>
<% end %>

否则它将返回对象...换句话说,所有列{id: 1, name: 'blabla', etc }

另外,

class Category < ActiveRecord::Base
   has_many :products
end

答案 1 :(得分:1)

这个定义:

belongs_to :category

为Product Model的每个对象定义一个表Category的引用点。示例您的类别模型有一些列,如:name,type,...

一个产品属于一个类别,而Category有许多产品。现在,您如何找到产品的类别名称?你不能这样写:

product.category # this is just reference to Category table

你应该这样写:

product.category.name # this will get category's name which product belongs to

如果您想获得类别类型(示例):

product.category.type