Rails嵌套表单错误

时间:2013-11-20 20:34:52

标签: jquery ruby-on-rails ruby-on-rails-4 nested-forms nested-attributes

我不知道可能导致这种情况的原因。我正在应用程序中创建第二个嵌套表单。我有一个网站供学生找工作。工作模型和表单是指从网站完成的工作,只是列出学生的真实工作。它是一个嵌套形式,是名为Resume的模型的一部分。我有另一个完全不同的模型,名为Schedule。 Schedule belongs_to一个名为Project的模型。我正在尝试创建一个嵌套表单,以便用户可以创建一个计划。两种形式都使用javascript根据需要动态地在页面上创建新表单。出于某种原因,当我尝试使用计划表单进入页面时,我被告知:

Missing partial schedules/job_fields, application/job_fields

这没有任何意义,因为工作和时间表没有任何关系。它不应该部分地寻找工作领域。以下是计划表单的视图代码:

 <% @projects.each do |project| %>
  <%= form_for project do |f| %>
    <%= f.fields_for :schedules do |builder| %>
        <%= render 'schedule_fields', :f => builder %>
    <% end %>
    <p><%= link_to_add_fields "Add Schedule", f, :schedules %>
    <p><%= f.submit "Submit" %></p>
  <% end %>
 <% end %>

这是部分'_schedule_fields.html.erb'

<p class = "fieldo">
    <%= f.label :title %><br />
    <%= f.text_field :title %><br />

    <%= f.label :task %><br />
    <%= f.text_field :task %><br />

    <%= f.hidden_field :_destroy %>
    <%= link_to_function "remove", "remove_fields(this)"  %>
 </p>

这是jquery:

//Dynamic forms
 function remove_fields(link) {
         $(link).prev("input[type=hidden]").val("1");
         $(link).closest(".fieldo").hide();
 }

 function add_fields(link, association, content) {
         var new_id = new Date().getTime();
         var regexp = new RegExp("new_" + association, "g");
         $(link).parent().before(content.replace(regexp, new_id));
 }

现在这里有一些有趣的东西。如果我在views / schedules目录中创建一个文件'_job_fields.html.erb'并复制并粘贴'_schedule_fields.html.erb'中的内容,则该表单可以正常工作。我无法弄清楚当我在表格时间表中明确说出时,为什么它正在搜索job_fields部分。如何使用schedule_fields partial?谢谢!

1 个答案:

答案 0 :(得分:0)

看起来你没有正确排列论据。 (如果你在应用程序助手中使用了任何东西,你也应该给它。)

您的link_to函数如下所示

link_to_add_fields "Add Schedule", f, :schedules

但你的javascript正在调用不同的参数:

function add_fields(link, association, content)

如果你匹配它们,你会得到f =关联,这是错误的。 :schedule是关联。我会查看这个railscast以获得更多帮助:http://railscasts.com/episodes/403-dynamic-forms