Я думаю, что самый ненавязчивый способ - это, если хук js не зависит от того, как выбранное значение помещается в URL для вызова.
Итак, я решил эту общую проблему так:
application.js: в теле вашей функции livehook / documentready:
$('select[data-observe-url]').change(function() {
var selected = $(this).find(':selected').val();
var url = $(this).attr('data-observe-url').replace('%(selected)',selected)
$.get(url)
return false;
});
, а затем ваш html:
<select id="signup_course_id" name="signup[course_id]" data-observe-url="http://localhost:3000/courses/%(selected)/select" >
<option value="">Choose Class</option>
<option value="1">excel 2007</option>
</select>
, сгенерированный с помощью formtastic:
form.input :course, :collection => Course.all, :include_blank => 'Choose Class',
:input_html => { 'data-observe-url' => select_course_url('%(selected)') }
Думайте о% (выбранном) как о параметре формата строки в URL, который jquery заменяет выбранным значением, используя $(это) .find ( ': выбрано')