Haml单选按钮预选语法

时间:2011-01-19 20:06:57

标签: ruby-on-rails radio-button haml

我们使用Ruby(1.9.2)Rails(2.3)。

我正在尝试设置单选按钮的预选择......

- form_for @user, :url => plan_user_url, :html => { :method => 'put', :class => 'form' }  do |f|
  - @plans.each do |p|
    %span
      %p= p[:blurb]
      %p= p[:price]
      - p[:features].each do |f|
        %p= f
      = f.radio_button {:id => p[:id], :checked => @user[:plan_id]==p[:id] || nil}
      = f.label :plan_name, p[:name]
    %p
      %br
  .spacer

  .field.first
    = f.submit 'Update', :class => 'button ok'
  .field
    = link_to 'Cancel', redirect_back_url || root_url, :class => 'button cancel'

HAML不喜欢这一行:

  = f.radio_button {:id => p[:id], :checked => @user[:plan_id]==p[:id] || nil}

感谢任何帮助。

2 个答案:

答案 0 :(得分:11)

这是无效的Ruby代码:

= f.radio_button {:id => p[:id], :checked => @user[:plan_id]==p[:id] || nil}

你试图调用radio_button方法,Ruby认为你传递了一个块,但实际上你传递的是Hash。这样更好:

= f.radio_button :id => p[:id], :checked => @user[:plan_id]==p[:id] || nil

这消除了ProcHash之间的歧义,但它仍然很奇怪。你为什么想要|| nil?我认为这是不必要的:

= f.radio_button :id => p[:id], :checked => @user[:plan_id] == p[:id]

答案 1 :(得分:-5)

感谢Brian的提示。事实证明

f.radio_button :plan_id, p[:id]

适用于预选。