数週間研究し、これを行うためのあらゆる方法を試したRailsのnoob。 私は現在、編集ビューからアソシエーションを構築しようとしています。私は、問題のオブジェクトがまだ作成されていないため、新しいビュー(優先)から作成しようとしました。私は今、Formtasticを使用しています。私はそれが "より良い協会を扱う"と聞いたので、問題の建物has_many:through association - 私は近いと思う。
私の質問では、私は手作業で関連付けを作成することができるので、ユーザーがフォームを介して選択したオブジェクトではなく、コントローラ定義のオブジェクトと結合します。リクエストパラメータが渡されていますが、私はそれらに正しくアクセスできないようです。
モデル:
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
バーモデルから - 私は更新からライン( CLOSEだと思うWHY!:
def follow_team!(team)
bars_teams.create!(:team_id => team.id)
end
をfollow_team上記は間違っています)
@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の応答です。私がもっと学ぶように、私はこれらのことを前もって決められることを願っています。回答ありがとう! –