Передача объекта формы частичной визуализации из запроса ajax - PullRequest
0 голосов
/ 07 октября 2010

У меня есть форма события с некоторыми вложенными моделями атрибутов. Дополнительные модели отображаются после выбора клиента в поле выбора. Наблюдатель наблюдает и вызывает действие контроллера, которое отображает часть, содержащую поля fields_for для вложенных моделей. У меня проблема в том, что я не могу передать блок 'формы' события недавно обработанному фрагменту - по крайней мере, я не могу понять, как ...

Приведенный ниже код вызывает ошибку: «неверное количество аргументов (0 для 1)». Любая помощь или предложения приветствуются. Как упомянуто ниже, я также готов повторно реализовать это, используя ненавязчивый JavaScript, если вы можете предоставить пример для этого сценария.

Форма события:

<%- form_for @event do |form| %>

  <%= select_tag :id=>event_client_id %>
  <%= observe_field :event_client_id, url => {:action => 'client_questions'}, :with => "'client_id=' + encodeURIComponent(value)+'&event_id='+#{@event.id} %>

Контроллер событий

 def client_questions
   @event = Event.find(params[:event_id])
   @client = Client.find(params[:client_id])
   @client_questions = @client.questions.active
   respond_to do |format|
     format.js {
       render :update do |page|
         page[:client_questions].replace_html :partial => 'client_questions', :layout => false
       end
     }
   end
 end

_client_questions.html.erb частичный

<%- form.fields_for :client, @client do |client| %>
  <%= client_text_field :name %>

  <%- client.fields_for :questions do |question| %>
    <%=question.text_field :content %>

1 Ответ

3 голосов
/ 08 октября 2010

Итак, ваша основная форма отображается в одном действии, и вы надеетесь передать объект формы из этого представления в другое представление, отображаемое во втором фрагменте? Это не то, что вы можете сделать, но вы можете изменить свой код представления во время частичной визуализации во второй раз, чтобы он отображался без необходимости в существующем объекте формы, например:

<%- fields_for "event[client_attributes]", @client do |client| %>
  <%= client_text_field :name %>

  <%- client.fields_for :questions do |question| %>
    <%= question.text_field :content %>

Я не запускал этот код для его тестирования, поэтому сравните HTML-код, который он генерирует, с HTML-файлом, который ваш существующий фрагмент будет генерировать, если он был представлен в том же действии, что и основная форма.

...