Rails简单形式Radio_buttons:如何为不同的无线电输入添加不同的类

时间:2017-06-24 22:51:06

标签: ruby-on-rails radio-button simple-form

我在Rails中使用simple_form,我想为不同的无线电输入添加不同的类。我做了一些搜索,但没有运气。

这是一个例子:

视图

<%= f.label "Gift Pack?" %><br>

<%= f.input :gift_pack, as: :radio_buttons,
        :collection => [[true, 'Gift Pack'], [false, 'Original Pack']],
        label: false,
        :label_method => :last,
        :value_method => :first,
        :input_html => { :class => 'gift_pack gift_pack_yes' } %>

生成的HTML

<input class="radio_buttons optional gift_pack gift_pack_yes" type="radio" value="true" name="book[gift_pack]" id="book_gift_pack_true"> Gift Pack

<input class="radio_buttons optional gift_pack gift_pack_yes" type="radio" value="false" name="book[gift_pack]" id="book_gift_pack_false"> Original Pack -->

想要

如何使第二个输入的类为radio_buttons optional gift_pack gift_pack_no,注意最后一个类是gift_pack_no

感谢。

1 个答案:

答案 0 :(得分:1)

首先创建新的视图助手

辅助

def gift_radio_class(val)
  val ? "gift_pack_yes" : " gift_pack_no"
end

在你的erb中你必须打电话给上面的帮助

的erb

<%=f.collection_radio_buttons(:gift_val, [[true, 'Gift Pack'], [false, 'Original Pack']], :first,:second) do |b|%>
<%b.label{ b.radio_button(class: gift_radio_class(b.value)) + b.text }%>
  <%end %>

我们可以通过查看帮助函数gift_radio_class

根据复选框的boolen值检索类名

如果您需要更多自定义解决方案http://www.rubydoc.info/github/plataformatec/simple_form/SimpleForm/FormBuilder:collection_radio_buttons

,请查看文档