向表单添加预填充 checkboxes/radio 按钮时避免重复代码

Avoid duplicate code when adding pre-filled checkboxes/radio buttons to your form

在我的预填表单中添加单选按钮和复选框时,我发现自己不得不重复代码。

理想情况下,我想通过变量声明是否应选择输入字段。比如:

- 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"

谁知道更好的方法?

Rails API 有几个 radio/checkbox 标签的助手

https://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-check_box_tag

https://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-radio_button_tag