好吧,我将尽力解释这个问题:
我有两个型号
employer.rb
class Employer < ActiveRecord::Base
has_many :listings
end
listing.rb
class Listing < ActiveRecord::Base
belongs_to :employer
end
雇主登录employers_controller
,并通过listings_controller
我无法将雇主表中的ID插入到每个创建的列表中的employer_id列中。我希望这是有道理的。如果有人有任何建议,我将不胜感激。我有一种感觉,这是因为我在employee_controller之外这样做,但不确定。
谢谢!
答案 0 :(得分:2)
1)如果您不是作为嵌套资源处理,那么
当您呈现列表控制器的新操作时,您知道要为哪个雇主(@employer)创建列表。
因此,使用hidden_field或hidden_field_tag
为employer_id渲染隐藏字段hidden_field_tag 'employer_id', @employer.id()
2)如果您作为嵌套资源进行交易,并且您的路线看起来像 / employer /:employer_id / listings / new /(Get)&amp;&amp; /雇主/:employer_id /列表
然后在创建动作
@employer = Employer.find(params[:employer_id])
@employer.Listing.new(params[:listing]
答案 1 :(得分:0)
我认为您的会话中有雇主ID,因为他们需要登录才能创建列表。我不会在视图中使用param,然后一个雇主很容易创建一个列表,好像它是由另一个雇主创建的,只需更改隐藏字段中的id值即可。这可能是一个更好的方法:
@employer = Employer.find(current_user.id)
@employer.Listing.new(params[:listing]