сделать частичное из jquery и haml - PullRequest
6 голосов
/ 05 августа 2010

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

У меня есть тег выбора, который вызывается для number_of_passengers, и я планирую динамически добавлять новые поля пассажиров длявыбранный номер.Скажем, я выбрал 2 из number_of_passengers, тогда в наборе полей должны появиться 2 формы.эти формы содержат имя, возраст и т. д.

Я попытался выполнить следующее:

вызвать функцию рельсов из jquery?

и просто преобразовать ее вхамло, но я получаю ошибки всякий раз, когда использую тег: javascript.Кроме того, я не думаю, что смогу «избежать» тега javascript, как только я в нем

:javascript
  $('#number_of_passengers').change(function() {
    var $num_of_passengers = $(this).val();
    for($i=0; $i<$num_of_passengers;$i++) {
      $('.passenger-info ul').append('<%= escape_javascript( render :partial => "new_passenger", :locals => {:booking => @booking }) %>');
    }
  })

, также, так как я нахожусь в form_for, как я могу передать переменную @booking в local?Это кажется действительно сложным, и я планирую сделать «грязный» выход - просто зацикливаться 20 раз (максимум 20 пассажиров), а затем просто скрывать / показывать их в зависимости от выбранного числа.Но это слишком грязно, не правда ли?

Ответы [ 3 ]

12 голосов
/ 17 августа 2010

Чтобы заставить работать интерполяцию, нужно сделать что-то вроде

!= "$('.passenger-info ul').append('#{escape_javascript( render :partial => 'new_passenger', :locals => {:booking => @booking })}');

так проще сказать: добавьте != в начало строки и вставьте строку между двойными кавычками.

Ваш вопрос о @booking: я предлагаю вам изучить некоторые примеры вложенных форм, чтобы сделать его более понятным (например, this и this railscast).

3 голосов
/ 25 января 2011

Мне действительно удалось это сделать, добавив:

respond_to do |format|
  format.js { render :partial => "new_passenger" }
end

, поэтому, даже если запрос был в js, он вернет частичную HTML.Острота

0 голосов
/ 05 августа 2010

Синтаксис Rails постоянно меняется, но не должен

render :partial => "new_passenger", :locals {:booking => @booking })

быть

render :partial => "new_passenger", :locals => {:booking => @booking })

Вы можете избежать javascript в блоке javascript, потому что вы оцениваете теги ruby.

Какие сообщения об ошибках вы получаете?

Последняя часть вашего вопроса мне не ясна, но вот что вы ищете:

- form_for @user do |f|
  # f.object is equal to @user
...