Как поместить информацию в переменную с помощью функции выбора с помощью Ruby on Rails

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я использую функцию выбора, чтобы позволить пользователю выбирать дату из списка, и я не знаю, как сохранить его выбор в переменной, чтобы использовать его впоследствии в цикле.

Вот моя функция выбора:

 <%= select( , , @benchmark.compositions.find(:all).collect {|u| [u.date_composition] }, :prompt => 'Selected date') %>
  

Я хочу сохранить его выбор (например: date_selected = 2014-06-05), чтобы я мог сделать так, чтобы мой объект отображался при выбранном условии (date_compostion = 2014-06-05).

Комментарии:

1. Вы хотите сохранить значение даты выбора после отправки формы или при выборе / изменении?

2. При выборе / изменении было бы неплохо, но после отправки тоже нормально.

Ответ №1:

Сначала убедитесь, что вы установили имя / идентификатор элемента select:

 <%= select( 'resource', 'field', @benchmark.compositions.find(:all).collect {|u| [u.date_composition] }, :prompt => 'Selected date') %>
  

Это сгенерирует HTML-код, который будет выглядеть:

 <select id="resource_field" name="resource[field]">
<option ..... /option>
</select>
  

Затем, если вы хотите получить значение при выборе / изменении, вы можете сделать это с помощью Coffeescript или jQuery. Пример:

 # coffeescript which is located under app/assets/javascripts/__a_controller_name__.js.coffee
$(document).ready =>·
  $('#resource_field').change ->
    alert( $(this).val() )
  

Элемент select является $('#resource_field') .

Если вы хотите получить значение после отправки, вы можете получить значение из контроллера, обратившись к переменной ‘params’:

 # a method under a controller
def sample_method
  @resource_field = params[:resource][:field]
end
  

Надеюсь, это поможет.

Приветствия!

Комментарии:

1. Спасибо, кажется, это то, что мне нужно. Но могу ли я попросить вас более конкретно рассказать о первом решении? Я установил драгоценный камень Coffeescript, поместил его в свой Gemfile, создал файл с именем benchmarks_controller.js.coffee в папке, которую вы упомянули. Но когда пользователь выбирает дату в приложении, это, похоже, ничего не меняет, и когда я использую $(‘#resource_field’) в своем коде, он говорит «синтаксическая ошибка»