Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 重定向模型';s路径到Rails中的其他路径_Ruby On Rails - Fatal编程技术网

Ruby on rails 重定向模型';s路径到Rails中的其他路径

Ruby on rails 重定向模型';s路径到Rails中的其他路径,ruby-on-rails,Ruby On Rails,假设我的routes.rb中有以下内容: resources :universes do resources :planets end 这将创建一个方法,universe\u planet\u path(universe,planet)。但是,行星对象知道它属于哪个宇宙,因此我希望有一个行星路径(planet)函数,它可以返回与宇宙行星路径(planet.universe,planet)相同的url。我应该把这样一个函数放在哪里,比如说,form_for@planet可以访问它,或者有

假设我的routes.rb中有以下内容:

resources :universes do
    resources :planets
end

这将创建一个方法,
universe\u planet\u path(universe,planet)
。但是,行星对象知道它属于哪个宇宙,因此我希望有一个
行星路径(planet)
函数,它可以返回与
宇宙行星路径(planet.universe,planet)
相同的url。我应该把这样一个函数放在哪里,比如说,
form_for@planet
可以访问它,或者有更好的方法来访问它吗?

要回答问题的第一部分,在你的应用程序中,你可以创建这样一个函数:

def planet_path(planet)
    universe_planet_path(planet.universe, planet)
end

虽然对部分的
表单不太确定,但这有点棘手。

要回答问题的第一部分,您可以在应用程序帮助程序中创建如下函数:

def planet_path(planet)
    universe_planet_path(planet.universe, planet)
end

但是,不确定
部分的
表单,这有点棘手。

如果不想将其定义为嵌套路由,请不要将其定义为嵌套资源。您仍然可以在模型中使用
属于_to
等,而无需在路由中嵌套资源。或者,可以创建辅助对象或自定义管线。但听起来你一开始并不希望它是一个嵌套的路由,我希望它是一个嵌套的资源。它在外部被称为
宇宙/1/行星/2
。没错。事实上,这是唯一一种提及它的方式,因为宇宙/2/行星/2
是一个完全不同的行星。但是当我可以简单地使用带有正确功能的
@planet
时,使用
宇宙行星路径(@planet.universe,@planet)
是非常笨拙的。你能提供一个帮助者的答案吗?这听起来像是我想要的,但我已经用这些确切的关键词搜索了一个小时,却一无所获。记住,没有外部路径可以定制。用同一id引用两个不同的行星是非常不寻常的。为什么要这样做?它们位于不同的数据库中,以确保完全分离关注点。除非SQL引擎本身存在严重的安全缺陷,否则访问一个数据库而不访问另一个数据库的客户端永远无法访问另一个数据库。如果不希望它作为嵌套路由,请不要将其定义为嵌套资源。您仍然可以在模型中使用
属于_to
等,而无需在路由中嵌套资源。或者,可以创建辅助对象或自定义管线。但听起来你一开始并不希望它是一个嵌套的路由,我希望它是一个嵌套的资源。它在外部被称为
宇宙/1/行星/2
。没错。事实上,这是唯一一种提及它的方式,因为宇宙/2/行星/2是一个完全不同的行星。但是当我可以简单地使用带有正确功能的
@planet
时,使用
宇宙行星路径(@planet.universe,@planet)
是非常笨拙的。你能提供一个帮助者的答案吗?这听起来像是我想要的,但我已经用这些确切的关键词搜索了一个小时,却一无所获。记住,没有外部路径可以定制。用同一id引用两个不同的行星是非常不寻常的。为什么要这样做?它们位于不同的数据库中,以确保完全分离关注点。访问一个数据库而不访问另一个数据库的客户端将永远无法访问另一个数据库,除非SQL引擎本身存在巨大的安全缺陷。我在Ruby repo中进行了探索,找到了form_for(实际上是form_标记)查找路径的位置。它从包含模块的任何内容中提取哈希,因此我仍然不知道要添加到哈希的位置。我在Ruby repo中进行了探索,找到了form_for(实际上是form_标记)查找路径的位置。它从包含模块的任何内容中提取散列,所以我仍然不知道要添加到散列的位置。