我正在构建一个带有工作板的 Rails 3 应用程序,工作人员可以在其中提交工作投标。我有以下关联:
Job:
has_many :bids
has_many :workers, :through => :bid
Bid:
belongs_to :job
belongs_to :worker
Worker:
has_many :bids
has_many :jobs, :through => :bid
我在显示工作页面上有一个表格,工人可以在其中提交投标。在控制器中,我有以下内容:
Job Controller:
def show
@bid = current_worker.bids.build
end
Bid Controller:
def create
@bid = current_worker.bids.build(params[:bid])
@bid.save
end
使用上面的代码,提交的投标将无法正确保存,因为它缺少 job_id:
1)用job_id和worker_id保存出价的正确方法是什么?
2)(我在将 job_id 从 Job Controller show 方法传递到 Bid Controller create 方法时遇到问题) - 在 session 变量中传递 job_id 是否安全?
作为参考,投标表格如下所示:
<%= form_for(@bid) do |f| %>
<%= f.label :min_price, "Minimum Price" %>
<%= f.text_field :min_price %>
<%= f.label :fee %>
<%= f.text_field :fee %>
<%= f.label :comments %>
<%= f.text_area :comments, placeholder: "Comments..." %>
<%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>