2017-02-21 2 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/экземплярах/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, это сработает. Но нет никакого способа узнать, какое действие имеет вид, насколько я могу видеть (простой, если) –

ответ

1

позволяет указать контроллер и действие вместо указанного маршрута. Предполагая, что одно и то же действие контроллера будет обрабатывать запрос, вы можете указать контроллер и действие

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

Спасибо, я также обнаружил '= link_to "previous", polymorphic_path ([workspace, Instance]', но он не " t, если добавлены дополнительные вложенные ресурсы. – Gaston

Смежные вопросы