Per*_*seP 4 ruby-on-rails simple-form twitter-bootstrap-3
我正在使用:
<%= simple_form_for @visitor, html: {class: 'form-inline'} do |f| %>
<%= f.error_notification %>
<%= f.input :favorite, label: false, as: :radio_buttons %>
<%= f.submit "Choose!", :class => "btn btn-primary"%>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我得到这个HTML:
<div class="control-group radio_buttons required visitor_favourite">
<div class="controls">
<label class="radio">
<input class="radio_buttons required" id="visitor_favourite_true" name="visitor[favourite]" type="radio" value="true" />
Yes
</label>
<label class="radio">
<input class="radio_buttons required" id="visitor_favourite_false" name="visitor[favourite]" type="radio" value="false" />
No
</label>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但我正在寻找的是一种生成标签作为无线电内联的方法,因为这是我想要的风格:
<label class="radio-inline">
Run Code Online (Sandbox Code Playgroud)
这里有一个类似的问题,但是对于"无线电内联"课程并不能用于生成无线电内联.
我正在使用simple_form 3.0.2并尝试3.1.0rc2和Bootstrap 3.2.0与rails 4.1.4无论如何或方法来解决这个问题?
Per*_*seP 10
通过从这个答案获得灵感,我设法通过创建:radio_buttons_inline输入类型来实现.
创建文件:
app/inputs/radio_buttons_inline_input.rb
Run Code Online (Sandbox Code Playgroud)
有这个内容:
class RadioButtonsInlineInput < SimpleForm::Inputs::CollectionRadioButtonsInput
def input
label_method, value_method = detect_collection_methods
@builder.send("collection_radio_buttons", attribute_name, collection, value_method,
label_method, input_options, input_html_options,
&collection_block_for_nested_boolean_style)
end
protected
def item_wrapper_class
"radio-inline"
end
end
Run Code Online (Sandbox Code Playgroud)
然后在您的视图中使用它,如下所示:
<%= simple_form_for @visitor do |f| %>
<%= f.error_notification %>
<%= f.input :favourite, :as => :radio_buttons_inline%>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这将html呈现为:
<div class="control-group radio_buttons_inline required visitor_favourite">
<div class="controls">
<label class="radio-inline">
<input class="radio_buttons_inline required" id="visitor_favourite_true" name="visitor[favourite]" type="radio" value="true" />
Yes
</label>
<label class="radio-inline">
<input class="radio_buttons_inline required" id="visitor_favourite_false" name="visitor[favourite]" type="radio" value="false" />
No
</label>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
Pau*_*hon 10
我在simple_form 3.1.0下工作了以下内容:
f.input :favorite, label: false, as: :radio_buttons,
item_label_class: "radio-inline", item_wrapper_tag: false
Run Code Online (Sandbox Code Playgroud)