Основной Вопрос о Ruby on Rails о маршрутизации

У меня есть контроллер без любой связанной модели. Этот контроллер должен охватить некоторую информацию из различных моделей. У меня есть много действий там, которые определяют определенные представления на странице. Каков был бы лучший способ организовать маршруты для этого контроллера?

То, что я хотел бы, должно иметь точку/dashboard/something к любому действию в контроллере панели инструментов. Не действия как новый / редактирование, но произвольный (showstats, и т.д.).

С методом проб и ошибок я сделал что-то вроде этого:

map.dashboard 'dashboard/:action', :controller => 'dashboard', :action => :action

Теперь возможно получить доступ к тем URL с помощью помощника:

dashboard_url('actionname')

Этот approch, кажется, работает хорошо, но действительно ли это - способ пойти? Я не совсем уверен, понимают, как имена вспомогательного метода сгенерированы. Как генерировать те же имена помощника как в основных контроллерах "action_controller_url"? Это было бы более универсальным и сделало код более последовательным.

Заранее спасибо.

5
задан John Topley 24 March 2010 в 09:04
поделиться

3 ответа

Вам не нужно указывать : action =>: action в маршруте, это уже сделано для вас. В остальном то, как вы это сделали, прекрасно.

Вы также можете указать его как символ: dashboard_url (: actionname) , но вы уже это знали;)

5
ответ дан 14 December 2019 в 08:47
поделиться

Если вам нужны вспомогательные методы для всех действий вашей информационной панели, вы должны указать их все, используя именованные маршруты, например:

map.example_dashboard 'dashboard/example', :controller => 'dashboard', :action => 'example'
map.another_dashboard 'dashboard/another', :controller => 'dashboard', :action => 'another'

Затем rails сгенерирует один _url и один помощник _path для каждого именованного маршрута. Я предпочитаю ваш подход, он более гибкий и простой.

2
ответ дан 14 December 2019 в 08:47
поделиться

Как генерировать те же имена помощников, что и в основных контроллерах "action_controller_url" ?

  map.action_controller(
    'action_controller',
    :controller => 'controller',
    :action => 'action',
    :conditions => { :method => :get }  # You can restrict the HTTP reqs allowed
  )
0
ответ дан 14 December 2019 в 08:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: