У меня есть контроллер без любой связанной модели. Этот контроллер должен охватить некоторую информацию из различных моделей. У меня есть много действий там, которые определяют определенные представления на странице. Каков был бы лучший способ организовать маршруты для этого контроллера?
То, что я хотел бы, должно иметь точку/dashboard/something к любому действию в контроллере панели инструментов. Не действия как новый / редактирование, но произвольный (showstats, и т.д.).
С методом проб и ошибок я сделал что-то вроде этого:
map.dashboard 'dashboard/:action', :controller => 'dashboard', :action => :action
Теперь возможно получить доступ к тем URL с помощью помощника:
dashboard_url('actionname')
Этот approch, кажется, работает хорошо, но действительно ли это - способ пойти? Я не совсем уверен, понимают, как имена вспомогательного метода сгенерированы. Как генерировать те же имена помощника как в основных контроллерах "action_controller_url"? Это было бы более универсальным и сделало код более последовательным.
Заранее спасибо.
Вам не нужно указывать : action =>: action
в маршруте, это уже сделано для вас. В остальном то, как вы это сделали, прекрасно.
Вы также можете указать его как символ: dashboard_url (: actionname)
, но вы уже это знали;)
Если вам нужны вспомогательные методы для всех действий вашей информационной панели, вы должны указать их все, используя именованные маршруты, например:
map.example_dashboard 'dashboard/example', :controller => 'dashboard', :action => 'example'
map.another_dashboard 'dashboard/another', :controller => 'dashboard', :action => 'another'
Затем rails сгенерирует один _url и один помощник _path для каждого именованного маршрута. Я предпочитаю ваш подход, он более гибкий и простой.
Как генерировать те же имена помощников, что и в основных контроллерах "action_controller_url" ?
map.action_controller(
'action_controller',
:controller => 'controller',
:action => 'action',
:conditions => { :method => :get } # You can restrict the HTTP reqs allowed
)