Ruby on rails _选择方法的_集合中的选项_的实现

Ruby on rails _选择方法的_集合中的选项_的实现,ruby-on-rails,Ruby On Rails,在rails中处理select标记时,我在理解\u select方法的\u collection\u中的options\u时遇到了麻烦。据我所知,此帮助程序需要一组任意对象和两个附加参数:分别从中读取选项值和文本的方法的名称: <%= options_from_collection_for_select(Product.all, :id, :name) %> 那么,有人能提出更好的解决方案吗?在这种情况下,您可以使用模型方法 在product.rb中 def get_categor

在rails中处理
select
标记时,我在理解\u select方法的\u collection\u中的
options\u时遇到了麻烦。据我所知,此帮助程序需要一组任意对象和两个附加参数:分别从中读取选项值和文本的方法的名称:

<%= options_from_collection_for_select(Product.all, :id, :name) %>

那么,有人能提出更好的解决方案吗?

在这种情况下,您可以使用模型方法

product.rb中

def get_category_name
  self.category.name
end
您可以在选项\u中调用它,从\u集合\u选择为

<%= options_from_collection_for_select(Product.all, :id, :get_category_name) %>


首先,它将检查产品表中是否存在任何列,然后它将检查方法。

您可以在产品模式中使用category\u name创建一个实例方法

def category_name
  self.category.name
end
然后在视图中使用此辅助对象

<%= options_from_collection_for_select(Product.all, :id, :category_name) %>

在产品型号中:

def category_name
  self.category.name
end
鉴于:

<%= options_from_collection_for_select(Product.all, 'id', 'category_name') %>

对于
产品
型号中的
类别名称
,您需要有getter方法:

def category_name
    self.category.name
end
在您看来,您只需调用
:category\u name

<%= options_from_collection_for_select(Product.all, :id, :category_name) %>


希望这将有助于

粘贴您想要粘贴的完整选择标签Hanks@Madan现在我知道了问题所在,而不是定义我使用的范围的方法。你能建议使用同样的范围吗。谢谢,顺便说一句
<%= options_from_collection_for_select(Product.all, :id, :category_name) %>