形成多重选择

时间:2011-09-07 16:30:40

标签: ruby-on-rails ruby-on-rails-3.1

我正在学习rails并且已经在这一天中苦苦挣扎了一天,并且无法弄清楚如何让它发挥作用。我希望我的表单中有一个可以选择多个元素的选择框。我使用此代码:

<div class="field">
<%= f.label :products %><br />
<%= f.select :products, {"A"=>1, "B"=>2, "C"=>3, "D"=>4},{},:size=>5,:multiple=>true %>
</div>

这很好用并产生这个HTML:

<div class="field"> 
<label for="script_products">Products</label><br /> 
<select id="script_products" multiple="multiple" name="script[products][]" size="5">         
<option value="1">A</option> 
<option value="2">B</option> 
<option value="3">C</option> 
<option value="4">D</option></select> 
</div>

我能弄清楚结果是如何发送/存储的。在我对“show”动作的看法中,如果我只是打印出来:产品我得到了这个:

产品:--- - '1' - '2' - '3'

如果我打印出来:products.inspect我得到了这个:

产品:“--- \ n-'1'\ n-'2'\ n-'3'\ n”

并且该类是一个字符串。我认为它将存储为一个数组,但我不能让它工作。我不知道破折号或换行符的来源。

1 个答案:

答案 0 :(得分:0)

我会考虑将选项添加为模型上的has-many关系。因此,您可以迭代它们,附加它们并以(IMO)更好的方式将它们包含在多个选择中。

我会在我的模型中做一些事情:

has_many :special_options

在我看来:

f.select :special_options, :multiple => true

这样可以避免在存储对象之前必须序列化和反序列化的问题。