我们使用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}
感谢任何帮助。
答案 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
这消除了Proc
和Hash
之间的歧义,但它仍然很奇怪。你为什么想要|| nil
?我认为这是不必要的:
= f.radio_button :id => p[:id], :checked => @user[:plan_id] == p[:id]
答案 1 :(得分:-5)
感谢Brian的提示。事实证明
f.radio_button :plan_id, p[:id]
适用于预选。