2016-08-23 37 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添加到強參數 –