Rails 3 — Создайте «link_to», используя выбранное значение из коллекции select

#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