collection_radio_buttons()
在rails 5.1 docs中定义如下:
collection_radio_buttons(
method, collection,
value_method,
text_method,
options = {},
html_options = {}, &block
)
在文档中没有解释options
参数是什么。 simple_form docs表示有一个名为item_wrapper_tag
的选项。
我一直在尝试这个:
<%= form_for(:an_article, url: "blah") do |f| %>
<%= f.collection_radio_buttons(
:author_id, Author.all,
:id,
:name_with_initial,
{item_wrapper_tag: :div} #<=== HERE *****
)
%>
<% end %>
我已经尝试了键item_wrapper_tag
和值div
的每个符号和字符串组合,并且在div中包含每个单选按钮都没有成功。
有人知道rails是否有与item_wrapper_tag
类似的选项?
答案 0 :(得分:0)
尝试使用gem simple_form表单。那么下面的代码应该可以使用。
gem simple_form
。Gemfile
bundle install
rails generate simple_form:install
然后在视图中创建一个simple_form
,如下所示:
<%= simple_form_for @post do |f| %>
<%= f.collection_radio_buttons( :author_id, Author.all, :id, :name_with_initial, item_wrapper_tag: :div) %>
<% end %>
注意:我刚刚从APIDock的collection_radio_buttons开始。
这可能会成功。 :)
答案 1 :(得分:0)
好的,我明白了:
<%= form_for(:an_article, url: "blah") do |f| %>
<%= f.collection_radio_buttons(
:author_id, Author.all,
:id,
:name_with_initial,
) do |b|
%>
<div>
<%= b.radio_button %>
<%= b.label %>
</div>
<% end %> #collection_radio_buttons do block
<% end %> #form_for do block
对于| b | uilder对象, radio_button
和label
为builtin methods:
传递给块的参数是一种特殊的构造器 集合,具有生成标签和广播的能力 集合中当前项目的按钮...使用它,您可以 更改标签和单选按钮显示顺序甚至使用标签 作为包装......
其他信息:
collection_radio_buttons(object, method,
collection,
value_method, text_method,
options={}, html_options={}, &block)
collection: For each element in collection, a radio button and label tag is created.
value_method: Called on each element in collection, and the return value is assigned to
the value attribute of the radio button.
object.method: If the return value of object.method is equal to the value attribute of a radio button,
the radio button gets a checked="checked" attribute.
text_method: Called on each element in collection, and the return value is used as
the text for the label tag.
options: Unknown purpose.
html_options: Used to specify additional html attributes for the radio button, e.g. {class: 'group1'}
使用form_for()
时,object
参数是f封装的对象,因此省略了object参数:
f.collection_radio_buttons(method,
collection,
value_method, text_method,
options={}, html_options={}, &block)
在此对象上调用和method
:
|
V
form_for(:an_article, url: "blah") do |f|