0

我是Rails的新手,并且一直遵循几个缺乏实时Web应用程序完整性的教程。他们展示了如何在每个文件中使用模型 - 视图 - 控制器,但是我没有找到一个展示如何用一种形式创建各种模型的方法,使用几个控制器之间使用关联的方法。如何使用两个控制器创建两个实例?使用两个控制器

使用案例:

我有一个用户模式,即是相关联的账户模式。我在irb中进行了测试,但在控制器中,我需要有一个User对象来将用户与帐户相关联,但创建用户时,它只是用户的表单数据,由用户控制器管理,如教程和帐户,分开在自己的视图中,由其自己的控制器管理。

如何在创建帐户时使用在用户控制器中创建的用户。我最想做的事情是,在创建用户时创建帐户,在相同的视图中。但是我真的很喜欢它,它是一个教程,展示了如何对视图和控制器进行全面控制,以及如何将这些元素纳入到您的设计中。谢谢

回答

1

你在找什么可能是“嵌套属性”。

下面是详细的文档:http://apidock.com/rails/ActiveRecord/NestedAttributes/ClassMethods/accepts_nested_attributes_for

否则,您可能正在运行到Rails是MVC的它自己的特殊变异。您不要来自其他控制器的呼叫控制器操作 - 控制器处理对Web请求的响应,而不处理与数据的交互。这是模型。

有点难以分辨您要求的内容,但我认为您实际上只是意想不到的简单性而被绊倒。您的user-model0中的所有内容都可以通过User object/singleton/class来访问。例如,User.find(1)。所有控制器和所有视图均可访问User(如Account)。只需在需要时使用它们!从评论

编辑:

def action 
    user = User.new(params[:user]) 
    user.save 

    account = Account.new(params[:account]) 
    account.user = user 
    account.save 
end 

但是!这种做事的方式几乎不能很好地处理错误。你真正想要的是使用嵌套属性,它允许你创建账户作为用户的一部分,反之亦然。

+0

您可以添加一些我不知道的价值信息:“用户可以在所有控制器中访问”。所以,我需要先创建一个用户,创建与该用户关联的账户,然后保存用户?我想,如果我保存用户,它不会再被访问,或者它可能通过调用User.last? –

+1

嗯,有点。这些帐户需要一个user_id,直到您保存该用户才会存在。然而,当你保存它时,你不会失去对用户的访问权限......一秒,增加回答。 – Narfanator

+0

即使我未在帐户视图表单中使用这些参数发送表单,“params [:user]”将会被访问吗? –