我有这段代码:
%tr
%th Parent
%td
%select{ :name => "firstlevel_id", :value => "#{@s.firstlevel_id}" }
- Firstlevel.find(:all).each do |f|
%option{ :value => "#{f.id}" } #{f.title}
但即使firstlevel_id
已经是选项列表中的ID之一,也不会将其显示为已选中。
答案 0 :(得分:2)
select_tag
帮助程序创建select
代码并控制所选值。您还可以在正确的selected
代码中设置option
属性:
%select{:name => "firstlevel_id"}
- FirstLevel.find(:all).each do |f|
%option{:value => f.id, :selected => f.id == @s.firstlevel_id} #{f.title}
我更喜欢第一种解决方案。
答案 1 :(得分:1)
您应该使用select_tag生成html,并使用options_for_select生成html:
select_tag :firstlevel_id, options_for_select( Firstlevel.all.map{|l| [l.title, l.id] }, @s.try(:firstlevel_id) )