我正在使用simple_form在我的Rails项目中创建一个表单。
<%= simple_form_for resource, :as => resource_name, :url => invitation_path(resource_name), :html => {:method => :post, id: 'invitations-form', class: 'invitations-form'} do |f| %>
<%= f.input :first_name, label: false, placeholder: "Family Member's First Name", input_html: { maxlength: 15, size: 40, value: nil } %>
<%= f.input :last_name, label: false, placeholder: "Family Member's Last", input_html: { maxlength: 15, size: 40, value: nil } %>
<%= f.input :email, label: false, placeholder: "Enter Email Address", input_html: { value: nil } %>
<div class="radio_buttons">
<%= f.label "#{:gender}:"%>
<%= f.collection_radio_buttons :gender, [["male", "male"] ,["female", "female"]], :first, :last %>
</div>
<%= f.input :invitation_relation, label: false, prompt: "I am this person's:", collection: relation_types, label_method: :humanize, input_html: { class: "browser-default dropmodule__input-select" } %>
<%= submit_tag "Send Invitation" %>
<% end %>
我使用了collection_radio_buttons方法创建了一组单选按钮。我不确定这是否相关,但我使用此方法而不是f.input :foo, as: :radio_buttons
的原因是由于输入方法没有为我生成标签标签,我认为我现在可以使用label_html
。我不确定这是否是一个可行的选择,但由于我花了很多时间,这个bug对我来说很麻烦。
这是上面相关div的html生成输出:
<div class="radio_buttons">
<label class="string optional control-label" for="user_gender:">Gender:</label>
<span>
<input checked="checked" id="user_gender_male" name="user[gender]" type="radio" value="male">
<label class="collection_radio_buttons" for="user_gender_male">male</label>
</span>
<span>
<input id="user_gender_female" name="user[gender]" type="radio" value="female">
<label class="collection_radio_buttons" for="user_gender_female">female</label>
</span>
</div>
我需要每个radio_button的输入标记包含一个“with-gap”类,如下所示:
<input checked="checked" id="user_gender_male" class="with-gap" name="user[gender]" type="radio" value="male">
和
<input id="user_gender_female" class="with-gap" name="user[gender]" type="radio" value="female">
但我没有成功。虽然我真的想通过将类放在collection_radio_buttons方法的标签中来解决问题,但如果在simple_form中有替代方法,请将其显示为解决方案。
答案 0 :(得分:0)
好的,我在这里找到了答案:
https://stackoverflow.com/a/30619068/4379077
我需要做的是添加item_wrapper_class
作为方法的第5个参数。它看起来不像是可选的。当我尝试从参数列表中删除它时,我的类参数(方法中的第6个参数)被忽略。这是最后的输入:
<div class="radio_buttons">
<%= f.label "#{:gender}:"%>
<%= f.collection_radio_buttons :gender, [["male", "male"] ,["female", "female"]], :first, :last, {:item_wrapper_class => 'foo-bar'}, {:class => "with-gap" } %>
</div>
和最终输出:
<div class="radio_buttons">
<label class="string optional control-label" for="user_gender:">Gender:</label>
<span class="foo-bar">
<input checked="checked" class="with-gap" id="user_gender_male" name="user[gender]" type="radio" value="male">
<label class="collection_radio_buttons" for="user_gender_male">male</label >
</span>
<span class="foo-bar">
<input class="with-gap" id="user_gender_female" name="user[gender]" type="radio" value="female">
<label class="collection_radio_buttons" for="user_gender_female">female</label>
</span>
</div>
如果有人知道如何inline_wrapper_class
可选,请告诉我。