2016-07-26 29 views
0

关于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

我的路线文件如下

路线

资源:职位,如:项目

回答

0

我已经想通了。

这是因为我直接使用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 %> 

我希望这有助于在未来的人。

感谢

0

collection_radio_buttons会自动设置选定的值。 它从前两个参数中找到选定的值。就像在你的例子中一样,它会查找@post.category_id无论从这个方法返回什么值,它都会查找相应的单选按钮,其值等于该值,并将该单选按钮设置为选中状态。

请查看API DOCK获取完整的文档。

如果它没有设置正确的值,然后确保category_id设置为post您正在编辑

+0

这就是我认为基于文档,但在我的情况我已经改变,从资源的路径:项目资源:帖子,如下:项,不知道是否这是我改变路线的问题? –

+0

不,这与'路线'无关 它期望在您的表单中有'@ post'实例变量。 –

+0

我认为,但我创建了一个新的Rails应用程序,如果我使用资源:posts,作为:: entries,但如果我将所有内容都保留为:entries作品并将控制器从PostsController更改为EntriesController,我遇到同样的问题 –

-1

这将这样的伎俩。

<%= 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 %> 
+0

你不认为这将总是选择第一类,不管我们的选择。 – SnehaT