关于Rails 5和collection_radio_buttons
的问题。
当您尝试编辑表单时,如何让它显示无线电输入的检查值?
<%= collection_radio_buttons(:post, :category_id, Category.all, :id, :name) do |b| %>
<div class="radio">
<%= b.label do %>
<%= b.radio_button + b.text %>
<% end %>
</div>
<% end %>
使用选择框f.collection_select
,它会记住该值,但不使用collection_radio_buttons
我的路线文件如下
路线
resources:posts,as::entries
我已经想通了。
这是因为我直接使用collection_radio_buttons
,而不是使用表单辅助对象。
来自(不存储用户值)
<%= collection_radio_buttons(:post, :category_id, Category.all, :id, :name) do |b| %>
<div class="radio">
<%= b.label do %>
<%= b.radio_button + b.text %>
<% end %>
</div>
<% end %>
至(现在保存用户值)
# Using the form helper `f.collection_radio_buttons`
# instead of `collection_radio_buttons`.
# Also removed passing the object in as an argument
<%= f.collection_radio_buttons(:category_id, Category.all, :id, :name) do |b| %>
<div class="radio">
<%= b.label do %>
<%= b.radio_button + b.text %>
<% end %>
</div>
<% end %>
我希望这对将来的任何人都有帮助。
感谢
collection_radio_buttons
将自动设置所选值。它从前两个参数中查找选定的值。就像在您的示例中一样,它将查找@post.category_id
,无论从该方法返回什么值,它都将查找值等于该值的相应单选按钮,并将该单选按钮设置为选中。
请查看API DOCK以获取完整的文档。
如果没有设置正确的值,请确保为正在编辑的post
设置了category_id
这样就可以了。
<%= collection_radio_buttons(:post, :category_id, Category.all, :id, :name,{},{ checked: Category.first.id }) do |b| %>
<div class="radio">
<%= b.label do %>
<%= b.radio_button + b.text %>
<% end %>
</div>
<% end %>