2011-05-09 73 views
0

当谈到Rails时,我仍然对n00b有所了解,但是,我对如何去了解多模型窗体有疑问。Rails 3中的多模型窗体3

基本上,我有一个事件,并且用户需要能够注册该事件并提供用于向该事件收费的信用卡。信用卡(我不会持有CC的实际数据,authorize.net会,但我需要保留代表该卡的令牌)与用户共同生活,以便他们可以在将来注册其他事件。所以,我希望用户能够在将来编辑它,并且该卡不针对单个事件。这似乎不像我会使用嵌套路线,是吗?

我有一种感觉,这很简单,但我想我只是不完全确定如何去做。我可以使用嵌套模型(不是路线)并且仍然独立更新每个部分?

回答

3

如果我理解你的问题,那么你可以。我想你的意思是这样的:

class User < ActiveRecord::Base 
    has_one :credit_card 
end 

如果这是正确的,那么第一步就是把它添加到User类:

class User < ActiveRecord::Base 
    has_one :credit_card 
    accepts_nested_attributes_for :credit_card 
end 

在这一点上,你可以只设立一个“用户“资源在路线文件中,您可以通过编辑视图中的fields_for方法编辑信用卡:

form_for @user do |f| 
    f.fields_for :credit_card do |ff| 
    ff.label :number 
    ff.text_field :number 
    end 
    f.submit 
end 

这有帮助吗?

0

由于格式不允许在评论中,我正在为它作出答案。

感谢@twmills的回答,

我也是新的轨道。我有一个问题,它会在工作的情况下,我有如下关系:

class User < ActiveRecord::Base 
    has_many :credit_cards, :dependent => :destroy 
    accepts_nested_attributes_for :credit_card 
end 

class CreditCards < ActiveRecord::Base 
    belongs_to :user 
end 

在上述情况下,你不能,除非你有父用户创建的CreditCard对象。 f.fields_for :credit_card do |ff|也会创建一个CraeditCard @user的对象给f?

根据我的理解,这是不可能的,因为如何告诉视图,哪个信用卡可以编辑。其次,在编辑时,这很好,但我可以在用户创建时做类似的事情。即在用户创建时获得他的信用卡信息。