显示在rails下拉列表中选择了哪个选项

时间:2013-09-18 16:01:42

标签: ruby-on-rails haml html-select

我有这段代码:

%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之一,也不会将其显示为已选中。

2 个答案:

答案 0 :(得分:2)

  1. 您可以使用select_tag帮助程序创建select代码并控制所选值。
  2. 您还可以在正确的selected代码中设置option属性:

    %select{:name => "firstlevel_id"}
      - FirstLevel.find(:all).each do |f|
        %option{:value => f.id, :selected => f.id == @s.firstlevel_id} #{f.title}
    
  3. 我更喜欢第一种解决方案。

答案 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) )