Ruby on Rails 4
在我的模特中,我有:
@category_check = ['cables', 'printers', 'monitors', 'accessories', 'towers', 'interaction']
它用于验证,现在我想在我的表单中将数组显示为选项。这不起作用:
<%= f.label :category %><br>
<%= f.collection_select :category, @category_check, {prompt: "Select Category"}, class: "input-lg" %>
我是否必须在控制器中创建另一个实例变量,或者是否有办法在模型变量的下拉列表中显示每个变量?谢谢
答案 0 :(得分:1)
您需要调用类似这样的内容
<%= f.collection_select :category, @category_check, :to_s, :to_s, {prompt: "Select Category"}, class: "input-lg" %>
这会将to_s传递给@category_check集合的每个元素。
答案 1 :(得分:1)
您应该能够通过模型访问该数组,假设您有一个实例化:
@my_model.category_check
然而,看起来这些类别是静态的,所以理想情况下它们是类级常量:
class MyModel
CATEGORY_CHECK = ['cables', 'printers', 'monitors', 'accessories', 'towers', 'interaction']
end
然后你可以在任何地方访问它,而不需要该类的实例:
MyModel::CATEGORY_CHECK
正如Lalitharyani在他的回答中提到的,你还需要提供名称和值方法来调用数组的每个项目,以便表单助手知道要显示的内容。
答案 2 :(得分:0)
您可能在方法调用中缺少一个参数:
<%= f.collection_select :category, @category_check, {prompt: "Select Category"}, class: "input-lg" %>
应该是:
<%= f.collection_select :category, :category_id, @category_check, {prompt: "Select Category"}, class: "input-lg" %>