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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails:如何访问视图中的belongs_to字段?相关的知识,希望对你有一定的参考价值。

鉴于下面的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
答案

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

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

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

也,

class Category < ActiveRecord::Base
   has_many :products
end
另一答案

这个定义:

belongs_to :category

只需为Product Model的每个对象定义一个表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 

以上是关于Rails:如何访问视图中的belongs_to字段?的主要内容,如果未能解决你的问题,请参考以下文章

Rails 使用同一命名空间中的模型作为 belongs_to 引用,如何从外部引用模型

Rails 3 中的Belongs_to 关联缓慢

以编程方式获取 Rails 4 中的 belongs_to 关联的类

如何在rails 4中创建新的belongs_to关联模型

如何测试 belongs_to 与 Rails 6 和 RSpec 4.1 的关联?

rails 覆盖关系的默认 getter (belongs_to)