2014-10-13 3 views
0

Я пытаюсь поставить опцию по умолчанию @languages ​​- «Все Языки» Вот вид:Как установить «вариант по умолчанию» в «options_from_collection_for_select» (Rails 3.2)?

.dropdown-search-filter 
    = select_tag "languages", options_from_collection_for_select(@languages, "id", "to_label", selected: params[:languages]), prompt: "All Languages" 
.dropdown-search-filter.search-select-tag 
    = select_tag "destination", content_tag(:option,'All Destinations',:value=>"all")+options_from_collection_for_select(@destinations, "id", "name", selected: params[:destination]) 

Он по-прежнему ставит на английском языке по умолчанию: here screenshot.

Что я делаю неправильно?

+0

Что такое параметры [: languages]? –

+0

@NikitaSingh В контроллере: "language_id = params [: languages] .blank? Language.all.map {| l | l.id}: params [: languages] rescue 1". Может это вам помочь? – muzaparofff

ответ

1

Вы пытаетесь получить доступ к параметрам, которые вы не можете. Создайте переменную экземпляра типа @language_id и используйте ее в представлении

0

Как я могу прочитать в документации (link), что-то вроде:

select_tag "languages", options_from_collection_for_select(@languages, "id", "to_label", params[:languages]), prompt: "All Languages" 

Обратите внимание, что params[:languages] должен быть действительным идентификатором вашей коллекции языков, потому что четвертый параметр (выбор по умолчанию) на основе id опций (поле, названное во втором параметре).

Это работает для вас?

+0

По-прежнему выводит «en», потому что в контроллере установлен «language_id = params [: languages] .blank? Language.all.map {| l | l.id}: params [: languages] rescue 1". «En» имеет id = 1. – muzaparofff

+0

Я не могу понять ваш пример. Я пытаюсь объяснить, что params [: language] должен быть допустимым «id» объекта языка в языках @languages. – odarriba

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