Как я могу создать эту динамическую форму? - PullRequest
0 голосов
/ 18 марта 2011

Представьте себе выпадающий список с 3 вариантами: A,B,C и div с идентификатором myform.Когда пользователь выбирает опцию из списка, содержимое div должно быть заменено формой, соответствующей опции.Дело в том, что формы не имеют ничего общего.

Я думал об этом следующим образом:

  • создать новый контроллер FormCreator
  • создать новое действие build_form, которое будет принимать тип в качестве параметра (A / B / C)
  • создать A.html.erb, B.html.erb и C.html.erb
  • в зависимости оттипа, я буду рендерить либо A / B / C, с отключенным рендерингом макета
  • использовать ajax для замены содержимого div на то, что контроллер выдалделать это?

Ответы [ 3 ]

1 голос
/ 18 марта 2011

Вот руководство, как бы я это сделал: Когда выбрана какая-то опция, например A, с AJAX GET AController # new как JSON и формой возврата, отображаемой erb. Чем $ ('# myForm'). Html (withResponse). Основная идея заключается в том, что при событии select.change вы запускаете новое действие правильного контроллера ресурсов и заменяете содержимое div его ответом.

Не полный ответ, но я надеюсь, что это даст вам представление

0 голосов
/ 18 марта 2011

Используйте javascript select для вызова вашего контроллера AJAX с помощью: onchange => remote_function (...)

В вашем контроллере =>

def FormCreator
  if params[:form] == 1
    render :update do |page|
      page.replace_html 'form_div', :partial => 'form_1'
      #make a file with just the form called _form_1.erb, this is called a partial 
      #because the file name starts with '_'
      #form_div is the id of the div that holds all 3 forms.
    end
  end
  #repeat for all forms
end
0 голосов
/ 18 марта 2011

Почему бы просто не скрыть формы и показать / скрыть их при выборе списка?Неважно, из какого контроллера или действия вы выводите список форм / выбора, но они, вероятно, должны публиковать данные в своем собственном контроллере и отображать только ранее опубликованную форму при ошибке проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...