Rails noob誰研究了幾個星期,並嘗試各種方式來做到這一點。 我目前正在嘗試從編輯視圖建立關聯。我放棄了試圖從新視圖(首選)來構建它,因爲所討論的對象還沒有被創建。我現在甚至使用Formtastic,因爲我聽說它「處理更好的關聯」問題建設has_many:通過關聯 - 認爲我很接近
在我的問題中,我說我很接近,因爲我能夠手動創建關聯 - 通過設置加入一個控制器定義的對象,而不是用戶通過表單選擇的對象。請求參數正在傳遞,我似乎無法正確訪問它們。
型號:
class Bar < ActiveRecord::Base
has_many :teams, :through => :bars_teams
has_many :bars_teams, :dependent => :destroy
accepts_nested_attributes_for :bars_teams
class Team < ActiveRecord::Base
has_many :bars, :through => :bars_teams
has_many :bars_teams, :dependent => :destroy
class BarsTeam < ActiveRecord::Base
belongs_to :bar
belongs_to :team
酒吧控制器:
def edit
@bar = Bar.find(params[:id])
@teams = Team.all
@bars_team = @bar.bars_teams.build
@title = "Edit bar"
end
def update
@bar = Bar.find(params[:id])
@team = @bars_team.team_id
@bar.follow_team!(@team)
if @bar.update_attributes(params[:bar])
flash[:success] = "Bar updated."
redirect_to @bar
else
@title = "Edit bar"
render 'edit'
end
end
由棒模型 - follow_team!:
def follow_team!(team)
bars_teams.create!(:team_id => team.id)
end
WHY我想我CLOSE(從更新線以上是錯誤的)
@team = @bars_team.team_id
我可以手動設置該行,例如@team = Team.find(49)。成功創建了該欄到#49隊的關聯。我只是似乎無法抓住從形式......它的方式,這裏是形式的團隊:
編輯表單:
<%= semantic_form_for (@bar) do |form| %>
<%= form.inputs :address, :city, :state, :zip_code, :phone_number, :website %>
<%= form.semantic_fields_for @bars_team do |team| %>
<%= team.input :team, :as => :select, :collection => @teams, :include_blank => false %>
<%= team.input :bar_id, :as => :hidden %>
<% end %>
<%= form.buttons %>
<% end %>
如果有人有興趣,這裏是請求參數,顯示出信息被獲得通過,但我仍然不知道如何正確地訪問團隊:
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"ECOBrnXsgMA5k2XKIiaZ7iguaIlUtj3pSHREZ683HKw=",
"bar"=>{"address"=>"",
"city"=>"",
"state"=>"",
"zip_code"=>"",
"phone_number"=>"",
"website"=>"",
"bars_team"=>{"team_id"=>"20",
"bar_id"=>"46"}},
"commit"=>"Update Bar",
"id"=>"46"}
超級長話短說,我該如何從形式訪問團隊設置的關聯?
對任何能夠幫助解決我原來無法從新視圖創建關聯的問題的人員的獎勵。基本上創建一個新酒吧,並在創建時立即爲其分配一個團隊。
這對問題的工作。然而,我會更徹底地研究這兩個答案 - 包括這個關於複雜性的答案,以及@jimworms迴應甚至不需要按照我設定的方式去做。我希望,隨着我學到更多,我將能夠提前確定這些事情。感謝您的回覆! –