2016-08-23 35 views
2

我想弄清楚如何渲染编辑链接到嵌套窗体。Rails - 如何在编辑模式下渲染嵌套窗体局部变形

我有称为项目和潜在用途的模型。该协会是:

项目

has_many :potential_uses 
     accepts_nested_attributes_for :potential_uses, reject_if: :all_blank, allow_destroy: true 

可能的用途

belongs_to :project 
belongs_to :user 

在我的项目展示页面,我呈现局部视图从我的潜在用途views文件夹。在该视图中,我提供了一个允许编辑内容的链接。

<% @project.potential_uses.each do |pu| %> 
      <p><%= pu.comment %></p> 
      <%= link_to 'Edit', edit_project_potential_use_path(@project, pu), f: f %> 

在我的潜在用途的意见文件夹中,我有一个编辑视图,有:

<%= render 'potential_uses_third_party_comments' %> 

在我的潜在使用第三方意见的部分,我有:

<%= simple_form_for [ @project, @potential_use ] do |f| %> 

      <%= f.error_notification %> 

       <div class="form-inputs"> 
        <%= f.input :comment, :label => 'Comment ', :input_html => {:rows => 5} %> 

       </div>  

      <div class="form-actions"> 
      <%= f.button :submit, "Submit", :class => 'formsubmit' %> 
      </div> 

趣谈这是错误的,因为当我保存并尝试使用它时,出现如下错误:

undefined local variable or method `f' for #<#<Class:0x007f8cb2f30188>:0x007f8cd171f448> 

我从其他帖子了解到,该错误是通过在编辑链接的末尾添加f:f来解决的。我已经有了。

任何人都可以看到我做错了什么吗?

回答

0

你的代码是混乱..

<% @project.potential_uses.each do |pu| %> 
    <p><%= pu.comment %></p> 
    <%= link_to 'Edit', edit_project_potential_use_path(@project, pu), f: f %> 
<% end %> 

是您的f变量定义在哪里?为什么要将f: f添加到link_to方法?

f - 我想,FormBuilder对象,通常情况下是添加f: frender partials,就像这样:

<%= simple_form_for [ @project, @potential_use ] do |f| %> 
    <%= render 'potential_uses_third_party_comments', f: f %> 
<% end %> 
+0

我将f:f添加到了编辑链接中,因为我认为我遵从其他帖子的建议。我完全不知道它是否包含在内,或者是否包含正确。我正在尝试在每个现有评论旁边显示编辑链接。 – Mel

4

您可以使用轨道fields_for方法来呈现你从嵌套。

<%= f.fields_for :potential_uses do |pu| %> 
    <%= render 'potential_uses_third_party_comments', f: pu %> 
<% end %> 
<%= link_to_add_association '+ Add Potential Use(s)', f, :potential_uses, partial: "potential_uses_third_party_comments", class: "btn btn-sm btn-primary" %> 
+0

我的目标是允许用户编辑他们现有的评论 - 我不想让他们创建新的评论。 – Mel

+0

好吧,不仅仅是将id传入允许参数列表(强参数)。 –

+0

我有:def potential_use_params params.fetch(:potential_use,{})。permit(:comment,:project_id,:user_id,:private_comment) end – Mel

1

请按照这个URL https://github.com/nathanvda/cocoon你会得到更多的想法相同。

+0

我不确定要从这些文档学到什么。我可以看到创建和删除操作。我试图找出如何编辑工作 – Mel

+0

只需将id添加到强参数 –