У меня есть форма страницы, где я хочу, чтобы пользователь добавил вложенные формы, нажав на удаленную ссылку («добавить фотографию», f. Ex). После нажатия кнопки я вставляю вложенные формы с помощью RJS. Инъекционные формы - это удаленные формы, но после инъекции формы не имеют прикрепленных javascript-событий, поэтому они просто передают с помощью http контроллеру вложенного объекта. Кроме того, все работает нормально.Добавление обработчиков javascript в удаленный объект формы после инъекции с помощью RJS
Мой вопрос:
Можно ли вызвать повторную проверку JavaScript удаленных форм через RJS, после инъекции ??
Таким образом, мои вложенные формы получат правильную обработку событий javascript и отправят с помощью AJAX.
Моя страница форма (_form.html.erb):
<% javascript 'ckeditor/ckeditor' %>
<%= form_for @page, :html => { :multipart => true } do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :active %><br />
<%= f.check_box :active %>
</p>
<p>
<%= f.label :homepage %><br />
<%= f.check_box :homepage %>
</p>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :description %><br />
<%= f.text_area :description, :rows => 5, :cols => 80 %>
</p>
<p>
<%= f.label :text %><br />
<%= f.text_area :text, :class => 'html' %>
</p>
<p>
<%= f.label :picture_class %><br />
<%= f.select :picture_class, ['left','right','full'] %>
</p>
<% unless @page.new_record? %>
<h2>Photos</h2>
<%= link_to 'Add photo', add_photo_page_url(@page), :remote => true %>
<div id="photos">
<%= render :partial => 'shared/forms/photo', :collection => @page.photos %>
</div>
<h2>Snippets</h2>
<%= link_to 'Add snippet', add_snippet_page_url(@page), :remote => true %>
<div id="snippets">
<%= render :partial => 'shared/forms/photo', :collection => @page.snippets %>
</div>
<h2>Downloads</h2>
<%= link_to 'Add download', add_download_page_url(@page), :remote => true %>
<div id="downloads">
<%= render :partial => 'shared/forms/download', :collection => @page.downloads %>
</div>
<h2>Paragraphs</h2>
<%= link_to 'Add paragraph', add_paragraph_page_url(@page), :remote => true %>
<div id="paragraphs">
<%= render :partial => 'shared/forms/paragraph', :collection => @page.paragraphs %>
</div>
<% end %>
<p><%= f.submit %></p>
<% end %>
<%= javascript_tag 'CKEDITOR.replaceAll("html");' %>
Controller код для создания вложенного объекта Фото: (page_controller.rb):
def add_photo
@page = Page.find(params[:id])
@photo = @page.photos.build
end
Rjs код, который получает выполняемую нажав на ссылку 'добавить фотографию' (add_photo.js.rjs):
page.insert_html :bottom, :photos, :partial => 'shared/forms/photo', :object => @photo
page.visual_effect :highlight, :photos, :duration => 2
частичная/форма, которая получает инъекцию RJS (_photo.html.erb) :
<%= form_for [@page, photo], :remote => true do |f| %>
<p>
<%= f.check_box :active %>
<%= f.text_field :name %>
<%= f.file_field :photo %>
<%= f.submit 'Save' %>
</p>
<% end %>
Любая помощь будет принята с благодарностью. Я хотел бы решить эту проблему с помощью вложенных форм (не вложенных атрибутов) и RJS, но не смог выполнить мой путь к документации по этому вопросу.
Спасибо!
- Якоб