rails - 如何从变量中设置选择列表的值?

时间:2011-03-15 21:36:16

标签: ruby-on-rails select formhelper

我想根据变量的值在选择列表中设置值。

此处的变量为@email_setting.frequency。 在视图中代码如下:

<%= select('email_setting', 'frequency','<option value="1">Daily</option>
                <option value="2">Immediately</option>
                <option value="3">Every Monday</option>
                <option value="4">Every Tuesday</option>
                <option value="5">Every Wednesday</option>
                <option value="6">Every Thursday</option>
                <option value="7">Every Friday</option>
                <option value="8">Every Saturday</option>
                <option value="9">Every Sunday</option>',
                :class=>'fl-space2 required size-120',
                :selected=>@email_setting.frequency) %>

我尝试过以下几种变体而没有运气。

有关如何使其正常工作的任何建议吗?

感谢

1 个答案:

答案 0 :(得分:3)

首先检查@ email_setting.frequency的值是否为。实际上,如果您将'email_setting','frequency'作为前2个参数,则所选值将为@email_setting.frequency。我相信它实际上是整数(如1)并且您提供字符串作为选项值(如"1")。这应该是它未被选中的原因。试试

<%= select('email_setting', 'frequency', [['Daily', 1],['Immediately', 2], ..], {}, :class=>'fl-space2 required size-120' %>

select的第4个参数是options,第5个参数是html_options。因此,如果您想提供像selected,class这样的html选项,您应该通过提供第4个参数options作为空哈希来提供它作为第5个参数。如果你真的想给予选择,你应该这样做:

<%= select('email_setting', 'frequency', [['Daily', 1],['Immediately', 2], ..], {}, :class=>'fl-space2 required size-120', :selected => @email_setting.frequency %>

但在你的情况下,第一个就足够了。

请参阅select rails api