Динамическое добавление вложенной формы - PullRequest
2 голосов
/ 04 января 2011

Я следил за этим Railscast http://media.railscasts.com/videos/074_complex_forms_part_2.mov

У меня есть задача и шаги.Каждая задача может иметь много шагов.

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

Я также использую rails3 с jQuery, но я не видел учебных пособий о том, как это сделать в rails3.

Моя задача / new.html.erb

<%= form_for @task, :html=>{:multipart => true do |f| %>
  <%= render 'form', :f=>f %>
< end >

для моей задачи / _form.html.erb

  <%= f.label :task_name %>
  <%= f.text_field :task_name %>

 <%= f.label :media %>
 <%= f.file_field :media %>
      < div id="steps" >
          <%= render 'steps/form', :f=> f % >
      < /div>
     <%= link_to_function "Add Step" do |page|
         page.insert_html :bottom, :steps, :partial=>'steps/form', :object => Step.new end %>
&lt%= f.submit %>

steps / form.html.erb

<p class="fields">
    <%= fields_for :steps do |builder| %>
       <%= builder.label :title >
       <%= builder.text_field :title >
       <%= builder.label :description %>
       <%= builder.text_area :description %>
    <% end %>
</p>

Страница загружается нормально, но когда я нажимаю «добавить шаг»ссылка ', я получаю две ошибки JavaScript.

RJS error:
 TypeError: Element.insert is not a function

, затем

Element.insert("steps", {bottom: "<p class=\"fields\">\n\t</p>\t"});

Ответы [ 2 ]

2 голосов
/ 04 января 2011

link_to_function больше не действует в rails3.

То, что я сделал, было 1) смотреть эту скринкаст http://railscasts.com/episodes/205-unobtrusive-javascript

вместо 'link_to_function, теперь у меня есть

<% link_to "Add Step", @step, :remote=>true, :class=>'addStep'%>

Тогда у меня есть content_for дляобработать и отобразить javascript (jQuery)

$('a.addStep').click(function(){
   $('div#newStep').html("<= escape_javascript(render('steps/form'))%>");
})

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

0 голосов
/ 04 июля 2011

Вы должны попробовать этот драгоценный камень https://github.com/ryanb/nested_form, чтобы его было проще установить без каких-либо проблем. Вы также проверили рельсовые броски с http://railscasts.com/episodes/196-nested-model-form-part-1 и http://railscasts.com/episodes/197-nested-model-form-part-2. Это совершенно новые из сложных форм, вместо вложенных моделей, то же самое.

Избавьтесь от всех символов 'h' и обязательно измените строку Jquery в нижней части помощника приложения на:

link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")")

Этот поток может помочь вам: rails fields_for частичное рендеринг с несколькими локальными файлами, создающими неопределенную переменную

Также прочитайте область комментариев бросков Rails, потому что они обычно обновляли код вплоть до сегодняшнего дня.

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