2017-02-21 204 views
0

我有一个嵌套的资源:Rails的嵌套资源和路径

def workspace 
    has_many :instances 
end 

def instance 
    belongs_to :workspace 
end 

和一些嵌套的路线

resources :workspaces do 
    resources :instances do 
    end 
end 
resources :instances 

这样的话,我可以访问以下路径,并得到同样的结果:

workspaces/1/instances 
/instances 

在我的'view/instances/index.html.erb'我有一个自定义分页链接,在那里我用额外的参数重新加载页面。

如果我在工作区/ 1 /实例,该链接应该是:

= link_to "← Previous", workspace_instances_path(:param => "data") 

但是,如果我在/实例:

= link_to "← Previous", instances_path(:param => "data") 

怎样才可以有一个单一的link_to,适用于两条路线?最好不列出所有可能的情况,只需一行

+0

“所有可能的情况下”,只有2例没有? –

+0

是的,目前有2个。我认为可能有帮手或其他东西来生成路径 – Gaston

+0

我想你需要自己写一个http://api.rubyonrails.org/classes/ActionController/Helpers.html。或者直接将逻辑直接放入erb文件中,即可工作。但是,我无法问出该视图属于哪个动作,只要我能看到(一个简单的if) –

回答

1

link_to可让您指定控制器和操作来代替命名路由。假设相同的控制器动作将处理请求,你可以指定控制器和动作

link_to "previous", :controller => "instances", :action => "my_action", :data => "data" 
+0

谢谢,我还发现'= link_to“previous”,polymorphic_path([workspace,Instance]',但它不'如果添加了额外的嵌套资源,则工作正常。您的解决方案完美无缺 – Gaston