Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 集合\u在值方法和文本方法之间使用不同的模型进行选择_Ruby On Rails_Model - Fatal编程技术网

Ruby on rails 集合\u在值方法和文本方法之间使用不同的模型进行选择

Ruby on rails 集合\u在值方法和文本方法之间使用不同的模型进行选择,ruby-on-rails,model,Ruby On Rails,Model,我正在尝试为对象(用户)创建一个集合字段,该对象从另一个模型(产品)获取其值方法,从另一个模型(产品描述)获取其文本) 产品通过产品描述id属于产品描述 产品描述.rb有两列,:id和:name 如何设置text\u方法?以下代码提供了正确的输入,但显示的是产品描述\u id整数,而不是相应的文本名称。如何从产品描述表中获取相应的“名称 <%= f.collection_select :product_description_id, @object.products.order(:prod

我正在尝试为对象(用户)创建一个
集合
字段,该对象从另一个模型(产品)获取其
值方法
,从另一个模型(产品描述)获取其
文本

产品
通过产品描述id属于
产品描述

产品描述.rb有两列,:id:name

如何设置
text\u方法
?以下代码提供了正确的输入,但显示的是产品描述\u id整数,而不是相应的文本名称。如何从产品描述表中获取相应的“名称

<%= f.collection_select :product_description_id, @object.products.order(:product_description_id), :product_description_id, :product_description_id %>

我试过了,但这给了我一个无效的陈述

<%= f.collection_select :product_description_id, @object.products.order(:product_description_id), :product_description_id, ProductDescription.find(:product_description_id).name %>

如有反馈,将不胜感激


<%= f.collection_select :product_description_id, @object.products.order(:product_description_id).includes(:product_description), :product_description_id, "production_descriptions.name" %> 
如果不向product添加一个返回描述的方法,或者使用描述方法将产品包装到一个对象中,就不能(至少不能)。这可能是一个好主意:product类的用户真的应该知道名称存储在单独表中的实现细节吗

但是,请记住,collection_select只是普通情况下的一种方便方法。如果您不适合这种情况,则使用“普通”选择没有任何问题:


添加一个
includes
是个好主意,尽管它不需要。

如果您使用SimpleForm,它有用于指定值和标签方法的参数。:select,:label_method=>:blah,:value_method=>:other_blah%>谢谢@iouri。我没有SimpleForm,但会研究它。我的问题是关于为<代码>:blah用于标签。我想包括@object.products的所有成员,并显示它们存储在product_description表中的相应名称。您对我如何做到这一点有什么见解吗?谢谢@drinehart,但这将返回product_description.name的no-method错误。也包括product_description.name。谢谢@Frederick。这正在返回正确的视图,但提交了错误的整数。(即,它显示产品描述id 2和3的名称,但当我选择其中一个时,它会发送4或5。请给我一点时间,看看我是否可以修复它。哦,我将product.id插入其中,而不是product\u description\u id。这是一个简单的修复方法。将
产品描述id
结尾处的
更改为
产品描述id
。再次感谢您的帮助。)你的帮助!
f.select :product_description_id, @object.products.order(:product_description_id).collect {|product| [product.production_description.name, product.product_description_id]}