Ruby on rails 在应用程序\u助手中创建自定义单选按钮助手
我想通过引导创建自定义单选按钮。 我做到了,但我想在application_helper中添加此控件 我当前的解决方案Ruby on rails 在应用程序\u助手中创建自定义单选按钮助手,ruby-on-rails,ruby-on-rails-3,twitter-bootstrap,Ruby On Rails,Ruby On Rails 3,Twitter Bootstrap,我想通过引导创建自定义单选按钮。 我做到了,但我想在application_helper中添加此控件 我当前的解决方案 <div class="btn-group" data-toggle="buttons-radio"> <% @engines2.each do |e| %> <button type="button" class="btn <%= @car.engine_id == "#{e.id}".to_i ? 'activ
<div class="btn-group" data-toggle="buttons-radio">
<% @engines2.each do |e| %>
<button type="button" class="btn <%= @car.engine_id == "#{e.id}".to_i ? 'active' : '' %>" data-toggle="button" onclick="javascript:document.getElementById('car_input_engine_id').value='<%= "#{e.id}" %>'">
<%= "#{e.name}" %>
</button>
<% end %>
<input type="hidden" id="car_input_engine_id" name="car[input_engine_id]" value="<%= @car.engine_id %>" />
</div>
但它不起作用。有什么想法吗?看看这个片段:
engines.each do |e|
...
end
它预成型了一些东西,但它的结果正在消失,因为它后面还有一行:
content_tag :input, :type => :hidden, :id=>"car_input_engine_id", :name=>"car[input_engine_id]", :value=>car_engine_id
因此,您必须连接两个结果:of引擎。每个…
和此行的结果
我认为您计划制作引擎。映射而不是引擎。每个:获取一组按钮-标签
然后您必须修复这一行:
:class=>'btn #{car_engine_id == #{e.id}.to_i ? "active" : ""}',
您试图执行插值({..}
),但将其包装在单引号中。如果字符串中有混合单引号/双引号,则可以使用%[…]
(其中[
是一个首选项问题,如果需要,可以使用%{…}
或其他方括号)
另外,content\u标签
对于input
不合适。input
标签必须包含哪些内容?对,根本没有内容!因此请使用简单的tag
助手
下面是我得到的:
def checkbox_bootstrap_tag(engines, car_engine_id)
content_tag :div, :class=>"btn-group", "data-toggle"=>"buttons-radio" do
engines_html = engines.map do |e|
content_tag :button,
:type => :button,
:class=> %[btn #{car_engine_id == e.id ? "active" : ""}],
:data => {:toggle => "button"},
:onclick=> "javascript:document.getElementById('car_input_engine_id').value=#{e.id}" do
e.name
end
end
safe_join(engines_html) +
tag(:input, :type => :hidden, :id=>"car_input_engine_id", :name=>"car[input_engine_id]", :value=>car_engine_id)
end
end
注意safe\u join
的用法:此帮助程序用于将数组元素与HTML标记合并(在输出之前不转义它们)
另外,
:data=>{:toggle=>“button”},
部分必须告诉您,Rails助手知道这个属性。太好了!非常感谢。
:class=>'btn #{car_engine_id == #{e.id}.to_i ? "active" : ""}',
def checkbox_bootstrap_tag(engines, car_engine_id)
content_tag :div, :class=>"btn-group", "data-toggle"=>"buttons-radio" do
engines_html = engines.map do |e|
content_tag :button,
:type => :button,
:class=> %[btn #{car_engine_id == e.id ? "active" : ""}],
:data => {:toggle => "button"},
:onclick=> "javascript:document.getElementById('car_input_engine_id').value=#{e.id}" do
e.name
end
end
safe_join(engines_html) +
tag(:input, :type => :hidden, :id=>"car_input_engine_id", :name=>"car[input_engine_id]", :value=>car_engine_id)
end
end