我想根据变量的值在选择列表中设置值。
此处的变量为@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) %>
我尝试过以下几种变体而没有运气。
有关如何使其正常工作的任何建议吗?
感谢
答案 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 %>
但在你的情况下,第一个就足够了。