【问题标题】:Reder class for a collection_radio_buttons within simple_formsimple_form 中 collection_radio_buttons 的 Reder 类
【发布时间】:2015-10-28 01:32:46
【问题描述】:

我正在使用 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 的原因是输入法没有为我生成标签标签,我想我现在可以使用 @987654323 生成标签@。我不确定这是否是一个可行的替代方案,但由于我花在它上面的时间,这个错误对我来说很麻烦。

这是上面相关 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 中有替代方法,请将此作为解决方案。

【问题讨论】:

  • 你试过label_html: { class: 'with-gap' }吗?
  • 是的,实际上我的描述有误。我需要在输入标签中显示该类,但我尝试了input_html { class: "with-gap" },但它忽略了我。`

标签: ruby-on-rails ruby-on-rails-4 simple-form


【解决方案1】:

好的,我在这里找到了答案:

https://stackoverflow.com/a/30619068/4379077

我需要做的是添加一个item_wrapper_class 作为该方法的第五个参数。它看起来不是可选的。当我尝试从参数列表中删除它时,我的类参数(方法中的第 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 设为可选,请告诉我。

【讨论】:

    猜你喜欢
    • 2023-01-27
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多