如何在一个中使用create two实例,使用两个控制器

时间:2016-09-20 22:43:47

标签: ruby-on-rails ruby-on-rails-3 associations polymorphic-associations belongs-to

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

用例:

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

创建帐户时如何使用用户控制器中创建的用户。我想做的最多,它是在创建用户时在同一视图中创建帐户。但我非常喜欢它,它是一个教程,展示如何对视图和控制器进行全面控制,以及如何在设计中容纳这些元素。谢谢

1 个答案:

答案 0 :(得分:1)

您正在寻找的可能是"嵌套属性"。

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

否则,您可能会遇到Rails,因为它是MVC的特殊变体。您没有从其他控制器调用控制器操作 - 控制器处理对Web请求的响应,而不是与数据的交互。那是模特的。

说出你要求的内容有点难,但我认为你实际上只是因为出乎意料的简单而被绊倒了。您可以通过User object / singleton / class事物访问user-model0中的所有内容。例如,User.find(1)。所有控制器和所有视图都可以访问UserAccount)。只需在需要时使用它们!

评论编辑:

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

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

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