我有一个添加功能+视图。在某些情况下,用户可以指定执行某些操作并调用应该向add函数提交id的函数。 (有效)
现在我想要如果这个参数不是nil那么选择标记应该用这个值预先设定。
我试过了:
<% if !params[:channel_id].nil? %>
<% :channel_id << params[:channel_id] %>
<% end %>
这不起作用。
选择标记如下所示:
<%= f.collection_select :channel_id, @channels, :id, :channelname, {prompt: (t "channel.add.prompt")}, class: "form-control", :required => :true %>
是否有解决方案来实现这一目标?
答案 0 :(得分:3)
您只需将值添加到collection_select
:
<%= f.collection_select :channel_id, @channels, :id, :channelname,
{
prompt: t('channel.add.prompt'),
selected: params[:channel_id]
},
class: 'form-control', required: true %>
另一个选项 - 我更喜欢 - 是在初始化表单对象时设置此值。这取决于form_for
的外观,但可能如下所示:
# in the controller
@model = Model.new(channel_id: params[:channel_id])
# in the view
<%= form_for @model do |f| %>
如果以这种方式完成,则无需更改collection_select
标记。
答案 1 :(得分:0)
使用selected:
键
<%= f.collection_select :channel_id, @channels, :id, :channelname, {prompt: (t "channel.add.prompt"), selected: "<id of record to be selected>"}, class: "form-control", :required => :true %>
答案 2 :(得分:0)
你可以尝试
<%= f.collection_select :channel_id, @channels, :id, :channelname, prompt: (t "channel.add.prompt"), class: "form-control", :required => :true, selected: params[:channel_id] || 2 %>