目前我有三個模型,一個用戶,has_many Projects和Projects has_many Parts。我目前正在用戶和零件之間建立關係模型(Part_Item)。Form_for構建多個關係
簡化模型:
class User
has_many :projects
has_many :part_items
end
class Project
belongs_to :user
has_many :parts, dependent: :destroy
accepts_nested_attributes_for :parts, :reject_if => lambda { |a| a[:name].blank? }, allow_destroy: true
end
class Part
belongs_to :project
has_many :part_items
end
class PartItem
belongs_to :user
belongs_to :part
end
在項目頁面的用戶將能夠推我做到了按鈕,將創建用戶和零件之間的關係。這是一個用戶可以看到他已經使用了哪些部分。如果有隻是其中的一部分,我可以寫:
<%= form_for(current_user.part_items.build(part_id: @part.id), remote: true) do |f| %>
<div><%= f.hidden_field :part_id %></div>
<%= f.submit "I Made It", class: "btn btn-small btn-primary" %>
<% end %>
這並不爲許多部分,這是該項目的一個嵌套的屬性工作。
問題: 1.如何獲得只是在形式部分項目的哈希?我試過了:
<%= @project.parts.each do |part| %>
<div><%= hidden_field_tag :part_id, part.id %></div>
<% end %>
但是這隻抓取最後一個part_id。
2.我應該在我的PartItem控制器中創建一個創建方法嗎?任何意見/方向,我應該如何在PartItem控制器中設置我的行爲,將不勝感激。目前我只有:
def create
@part = Part.find(params[:part_id])
current_user.save_part!(@part)
redirect_to root_url
end
這適用於保存一個零件,但不適用於保存多個零件。
更新爲<%= f.hidden_field:part_id,part.id%> –
如果您的應用程序處於實時模式,請爲此提供網址,以便知道您真正想要做什麼 –
@NitinJ已更新它到<%= hidden_field_tag:part_id,part.id%> f.hidden_field給出錯誤。這隻抓取最後的part_id。它不是在現場模式,基本上我有一個項目與部分作爲嵌套屬性。我想收集表單中的part_ids並提交給PartItem控制器,這樣我就可以在用戶和零件之間建立關係。 – ChrisBarthol