私は、労働者が仕事に入札でき、上司が自分の仕事ごとに単一の入札を受け入れて「割り当て」を作成できる求人掲示板を構築しています。ジョブショーページでは、すでに作成された入札を上司が受け入れることができます。とりわけ、私は次の協会を持っています。
Job:
has_many :bids
has_many :assignments, :through => :bids
Bid:
has_one :assignment
belongs_to :job
Assignment:
belongs_to :bid
has_one :job, :through => :bid
Job Show ページ内: (上司が入札を受け入れるためのフォーム)
<%= form_for :assignments, :url => '/assignments' do |f| %>
<%= f.submit "Accept Bid", class: "btn btn-mini" %>
<% end %>
ジョブ コントローラで:
Show Action:
@job.bids.each { |bid| bid.build_assignment }
割り当てコントローラーで:
Create Action:
@bid = Bid.find(params[:bid_id])
@assignment = @bid.build_assignment(params[:assignment])
@assignment.save
ご覧のとおり、入札と関連付けて割り当てを作成しようとしています。質問:
1)「入札を受け入れる」(上記のフォーム)をクリックすると、Railsは入札が見つからないことを示すエラーを表示します(割り当てコントローラーの作成アクションで)。なんで?
2) 私も試してみました: <%= f.hidden_field :bid_id %> フォームで、Assignment create アクションを @assignment = Assignment.new(params[:assignment]) に変更しましたが、今では割り当てオブジェクトはどうやらbid_idがないので保存します。