【问题标题】:Avoid duplicate code when adding pre-filled checkboxes/radio buttons to your form向表单添加预填充复选框/单选按钮时避免重复代码
【发布时间】: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


【解决方案1】:
猜你喜欢
  • 2021-12-24
  • 2011-07-19
  • 1970-01-01
  • 2019-09-07
  • 2018-03-23
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
相关资源
最近更新 更多