2017-02-21 201 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