【问题标题】:Rails nested form errorRails嵌套表单错误
【发布时间】:2013-11-20 20:34:52
【问题描述】:

我不知道可能是什么原因造成的。我正在应用程序中制作我的第二个嵌套表单。我有一个网站供学生找工作。工作模型和表格是指在网站外完成的工作,并简单地列出学生在现实世界中的工作。它是一种嵌套形式,是称为 Resume 的模型的一部分。我有另一个模型,完全不同,称为 Schedule。计划属于_一个名为 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 部分进行此操作?谢谢!

【问题讨论】:

  • 在您的问题之上,我是否正确地假设您正在尝试向此表单动态添加字段?
  • 是的。本质上,每个计划都包含一个任务。每次有人点击“添加”时,都会动态创建一个新的日程表(标题一个字段,任务一个字段)
  • 是的,我想我能认出你在做什么,因为我昨天确实在做这个!如果您需要一些灵感,这里有一个非常好的教程(带有工作演示):pikender.in/2013/04/20/…

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


【解决方案1】:

您似乎没有正确排列参数。 (如果你在应用程序助手中使用了任何东西,你也应该提供它。)

您的 link_to 函数如下所示

link_to_add_fields "Add Schedule", f, :schedules

但您的 javascript 调用不同的参数:

function add_fields(link, association, content)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多