使用has_many和belongs_to的rails

时间:2011-07-21 16:52:58

标签: ruby-on-rails ruby-on-rails-3

好吧,我将尽力解释这个问题:

我有两个型号

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之外这样做,但不确定。

谢谢!

2 个答案:

答案 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]