带有bootstrap的Rails collection_radio_buttons无法正常工作

时间:2014-09-23 15:23:10

标签: twitter-bootstrap ruby-on-rails-4

我有一个用于过滤记录的集合。不幸的是,引导程序样式不起作用。

= collection_radio_buttons :ptype, :id, Ptype.all, :id, :part_type, {:checked => session[:ptype_id]}, {:onchange => "ptype_set(value)", :class => "radio-inline"}

正在制作这个......

<input checked="checked" class="radio-inline" id="ptype_id_1" name="ptype[id]" onchange="ptype_set(value)" type="radio" value="1" />
<label for="ptype_id_1">Welded</label>

<input class="radio-inline" id="ptype_id_2" name="ptype[id]" onchange="ptype_set(value)" type="radio" value="2" />
<label for="ptype_id_2">Laser/Formed</label>

<input class="radio-inline" id="ptype_id_3" name="ptype[id]" onchange="ptype_set(value)" type="radio" value="3" />
<label for="ptype_id_3">Bolt_on</label>

<input class="radio-inline" id="ptype_id_4" name="ptype[id]" onchange="ptype_set(value)" type="radio" value="4" />
<label for="ptype_id_4">Machined</label>

<input class="radio-inline" id="ptype_id_5" name="ptype[id]" onchange="ptype_set(value)" type="radio" value="5" />
<label for="ptype_id_5">Empty</label>

bootstrap documentation中,它表明class="radio-inline"应该是label的一部分,而不是input的一部分(如下所示)。

<input checked="checked" id="ptype_id_1" name="ptype[id]" onchange="ptype_set(value)" type="radio" value="1" />
<label for="ptype_id_1" class="radio-inline">Welded</label>

这个集纯粹被用作激活Javascript进行过滤的选择器,因此我不需要将它嵌套在form_for中。但是,我甚至试过了,但它也没有用。

有没有办法让class="radio-inline"进入标签标签?

1 个答案:

答案 0 :(得分:2)

你好运:collection_radio_buttons accepts a block and you can pass a builder object to it。该构建器上的labelradio_button方法接受HTML选项哈希参数和块,您可以使用text方法获取实际的选项标签文本。在Slim你可以试试这个:

= collection_radio_buttons :ptype, :id, Ptype.all, :id, :part_type do |b|
  = b.label(:class => 'radio-inline') { b.radio_button(:checked => session[:ptype_id], :onchange => 'ptype_set(value)') + b.text }

对于内联单选按钮,Bootstrap希望输入嵌套在标签内。这将以您期望的方式呈现您的单选按钮。享受!