Динамическое добавление элементов в форму - PullRequest
1 голос
/ 16 сентября 2011

Моя цель состоит в том, чтобы у меня была форма, в которой я заполняю некоторые детали, а затем нажимаю кнопку «добавить вопрос», которая является ссылкой, которая должна динамически добавлять вопрос.

т.е.


Дата:
Имя:
Описание:

Добавить вопрос

Создать


my _form.html.haml начинается как таковой (эта форма находится в режиме просмотра / интервью, поскольку моя цель - добавить вопросы к собеседованию. Однако вопросы можно использовать независимо друг от друга). интервью тоже)

= form_for ([:posting, @interview]) do |ff|<br>
     - if @interview.errors.any?

   . . . (more fields) . . .

.field{:id => "overall_questions"} 
    =link_to "Add a Question", new_question_path, :remote => true
    %br/
    %br/

.field{:id => "individual_questions"} 
    =ff.label :whyyy
    =ff.fields_for  :questions, @interview.questions do |builder|
        = render :partial => "question_fields" 
    %br/  
    %br/

.actions
    = ff.submit 

_question_fields.html.haml

.fields{:id => "question#{builder.object.id}"}
    =ff.label :content, "Question"
    =link_to "Remove", question_path(builder.object.id), :remote => true, :confirm => "Are you sure?", :method => :delete
    %br/
    =ff.text_area :content, :rows => 3

: remote => true (из _form.html.haml) направляется на мой questions_controller.rb

def new

    @question = Question.new
    respond_to :js

end

эта ссылка на мой new.js.erb файл в представлении / вопросы

$('#individual_questions').clone().appendTo($('#overall_questions'))

Дело в том, что я не совсем уверен, как вызвать _question_fields.html.haml. Я знаю, что файл js.erb работает, потому что я смог запустить окна оповещений при нажатии кнопки «Добавить вопрос», и в настоящее время он также добавляет поле «Whyyy» с отдельными вопросами id.

1 Ответ

0 голосов
/ 16 сентября 2011

Один из способов сделать это описан в следующем эпизоде ​​RailsCasts:

http://railscasts.com/episodes/74-complex-forms-part-2

Что касается вопроса .haml, вы сможете изменить пример в этом эпизоде, чтобы понять эту часть. Пока его имя соответствует соглашению (и на первый взгляд выглядит так), оно должно работать без особых проблем.

...