#ruby-on-rails-3 #form-helpers
#ruby-on-rails-3 #помощники формы
Вопрос:
Всем привет.
У меня есть форма в моем приложении rails 3, и одно из полей — это «выбор коллекции», например
<div class="field">
<%= f.label :provider_id, "Provider" %>
<%= collection_select( :purchase_document, :provider_id, Provider.all, :id, :name) %>
</div>
Идея состоит в том, чтобы иметь возможность добавлять «link_to», используя выбранное значение из «выбора коллекции», т.е.:
<div class="field">
<%= f.label :provider_id, "Provider" %>
<%= collection_select( :purchase_document, :provider_id, Provider.all, :id, :name) %> <%= link_to "Show", provider_path(***selected option from collection select***)%>
Но я не знаю, как получить выбранное значение.
Есть ли способ rails сделать это?
Надеюсь, вы сможете мне помочь, спасибо
Ответ №1:
Не знаю, хотите ли вы это сделать, но если вы хотите динамически изменять ссылку, когда пользователь выбирает разные элементы из выпадающего меню, вам необходимо реализовать это с помощью сценариев на стороне клиента, таких как Javascript (или Coffeescript). Ruby on Rails может выполнять сценарии только на стороне сервера, любое динамическое поведение, связанное с браузером, должно выполняться с помощью сценариев на стороне клиента.
Комментарии:
1. Да, это именно то, что я ищу… Вы знаете, где я могу найти пример?
2. Посмотрите на marcgrabanski.com/articles/jquery-select-list-values предполагая, что вы используете jQuery (это значение по умолчанию в Rails 3.1).
3. Я внес некоторые изменения в код на странице, которую вы мне дали … и все отлично работает!!!
4. Предоставленная вами ссылка больше не работает. Теперь на этот вопрос нет ответа.
Ответ №2:
Это вполне возможно сделать в rails без javascript. Мы сохраняем все параметры в params (то есть в url), и мы отправляем форму с помощью метода «get» (не post, как обычно), поэтому мы можем иметь все эти параметры в url.
Следующий пример должен работать, чтобы написать имя в текстовом поле и получить страницу, где имя передается в качестве параметра URL. (например http://myapp.com:3000?user_name=andresamp;phone_number=123456
)
Просмотр файла:
= form_tag(reloadindex_aplication_path, method: :get) do
Name:
= text_field_tag 'user_name', params[:user_name]
Phone:
= text_field_tag 'phone_number', params[:phone_number]
= submit_tag "Search..."
Файл контроллера:
def reloadindex
redirect_to aplication_path({:user_name => params[:user_name], :phone_number => params[:phone_number]})
end