【发布时间】:2018-08-08 13:42:26
【问题描述】:
在我的预填表单中添加单选按钮和复选框时,我发现自己不得不重复代码。
理想情况下,我想通过变量声明是否应该选择输入字段。比如:
- checked = false # or `true`, `false`, `nil`, `""`
%input{:type => "radio", :name => "foo", :value => "bar", :checked => checked}= "foo"
%input{:type => "checkbox", :name => "foo", :value => "bar", :checked => checked}= "foo"
但结果是,无论我在checked 变量中输入什么值,它都会导致输入字段最终被选中。
我的解决方案导致大量重复代码:
- checked = false # or `true`, `false`, `nil`, `""`
- if true
%input{:type => "radio", :name => "foo", :value => "bar", :checked => true}= "foo"
- else
%input{:type => "radio", :name => "foo", :value => "bar"}= "foo"
- if true
%input{:type => "checkbox", :name => "foo", :value => "bar", :checked => true}= "foo"
- else
%input{:type => "checkbox", :name => "foo", :value => "bar"}= "foo"
谁知道更好的方法?
【问题讨论】:
-
不完全清楚您要完成什么,但为什么不直接使用您的
checked变量作为输入字段中:checked选项的值?示例:%input{type: "radio", name: "foo", value: "bar", checked: checked}= "foo" -
@mmichael 因为您的浏览器似乎忽略了该值。如果
checked键存在,则复选框/单选按钮被选中。 -
您应该使用 Rails 表单助手。在这种情况下,check_box_tag:
check_box_tag 'foo', 'bar', checked其中checked是您的布尔变量。 -
您的第一种方法是在 Haml 中执行此操作的正确方法,并且应该有效。生成的 HTML 是什么样的?
标签: ruby-on-rails ruby haml erb