Ruby on rails 双嵌套路由
目前我有属于程序的步骤:Ruby on rails 双嵌套路由,ruby-on-rails,Ruby On Rails,目前我有属于程序的步骤: map.resources :procedures, :has_many => :steps 这对我来说很好,我得到的URL看起来像/procedures/3/steps/5 但是,假设我想再添加一层,即属于步骤的图形,以获得此:/procedures/3/steps/5/Figures/1 这是一个怪物的网址放在一边,我到底该如何做这个路由 编辑:也许我不应该把它放在一边,我应该这样做吗?图形只是我将在步骤中显示的图像的容器,因此用户不会真正“访问”任何图形,
map.resources :procedures, :has_many => :steps
这对我来说很好,我得到的URL看起来像/procedures/3/steps/5
但是,假设我想再添加一层,即属于步骤的图形,以获得此:/procedures/3/steps/5/Figures/1
这是一个怪物的网址放在一边,我到底该如何做这个路由
编辑:也许我不应该把它放在一边,我应该这样做吗?图形只是我将在步骤中显示的图像的容器,因此用户不会真正“访问”任何图形,我只需要从图形中获取图像。这比我可以从头顶上更好地解释这一点。基本上,你可以在定义路线时使用来实现你想要的目标。这比我一下子就能理解得更好。基本上,你可以在定义路线时使用来实现你想要的目标。从你的评论中,我认为你是对的:你永远不需要路线到数字。。。你永远不会想不必要地把你的路线复杂化 听起来你要走的最远的一步就是表演动作。。。您只需向ActiveRecord请求该步骤的数字列表。也就是说,你会有
class Step < ActiveRecord::Base
has_many :figures
end
类步骤
及
类图
但是对于路由,您只需要关心RESTfully请求的资源——在这种情况下,它看起来像是您的
过程
,以及它们相关的步骤
。你在问题中列出的路线对我来说很合适 从你的评论来看,我认为你是对的:你永远都不需要去看数字。。。你永远不会想不必要地把你的路线复杂化
map.resources :procedures do |procedure|
procedure.resources :steps do |step|
step.resources :figures
end
end
听起来你要走的最远的一步就是表演动作。。。您只需向ActiveRecord请求该步骤的数字列表。也就是说,你会有
class Step < ActiveRecord::Base
has_many :figures
end
类步骤
及
类图
但是对于路由,您只需要关心RESTfully请求的资源——在这种情况下,它看起来像是您的过程
,以及它们相关的步骤
。你在问题中列出的路线对我来说很合适
map.resources :procedures do |procedure|
procedure.resources :steps do |step|
step.resources :figures
end
end
如果您需要像/Figure/这样的路线,请使用:
map.resources :procedures, :shallow => true do |procedure|
procedure.resources :steps do |step|
step.resources :figures
end
end
在你看来,这有点像:
<%= link_to "Figure", figure_url(@procedure, @step, @figure) -%>
如果您需要像/Figure/这样的路线,请使用:
map.resources :procedures, :shallow => true do |procedure|
procedure.resources :steps do |step|
step.resources :figures
end
end
在你看来,这有点像:
<%= link_to "Figure", figure_url(@procedure, @step, @figure) -%>
根据那篇文章,我不应该这样做,而是应该这样做:map.resources:steps,:has_many=>:figures。但是,假设用户永远不会实际访问该图,但这些图将只按步骤使用。我还是应该把它分开,还是可以把它作为一个巨大的双重嵌套的东西?根据那篇文章,我不应该这样做,而是应该这样做:map.resources:steps,:has_many=>:figures。但是,假设用户永远不会实际访问该图,但这些图将只按步骤使用。我还是应该把它分离出来,还是可以把它作为一个巨大的双嵌套的东西?正如你们所知道的,URI表示与REST是正交的。此外,如果您对同一资源的子集有不同的URI(并且使用相同的媒体类型),那么您可能违反了REST约束。对于属于步骤的图形,沿着/figures/1?step=5的行可能更好。正如您所知,URI表示与REST正交。此外,如果您对同一资源的子集有不同的URI(并且使用相同的媒体类型),那么您可能违反了REST约束。对于属于步骤的图形,沿着/figures/1?step=5的行可能更好。