2016-05-05 2 views
1

У меня есть функция добавления + вид. В некоторых случаях пользователь может указать, чтобы выполнить какое-либо действие, и вызвать функцию, которая должна отправить идентификатор функции добавления. (что работает)Rails установка тега выбора до заданного значения

Теперь я хотел, чтобы, если этот параметр не равен 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

Укажите, как выглядит выражение 'form_for'. – spickermann

ответ

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 тег.

+0

первое решение работает perfekt! благодаря – Felix

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

Вы можете попробовать

<%= f.collection_select :channel_id, @channels, :id, :channelname, prompt: (t "channel.add.prompt"), class: "form-control", :required => :true, selected: params[:channel_id] || 2 %> 
+0

Возвращает синтаксическую ошибку рядом с параметрами [: channel_id – Felix

+0

вы можете попробовать 'selected: params [: channel_id] || 2 'обновить мой пост, он примет идентификатор канала, если он не равен нулю или по умолчанию какое-либо значение, как 2 –

Смежные вопросы