2013-04-15 3 views
0

У меня есть приложение rails, где я бы хотел ввести некоторые статические страницы. Поскольку у моего приложения есть как «публичное» лицо, так и комплексный админ-сервер, я решил переместить мои контроллеры в соответствующие подпапки, поэтому приложения/контроллеры содержат только две вложенные папки.Оптимальный способ обработки статических маршрутов страниц

Сейчас я создаю раздел политики с политиками компании.

Я пришел к этому решению до сих пор, но это не работает

namespace :policy, path: 'politik' do 
    get 'miljoe' 
    get 'kvalitet' 
    get 'kunde' 
    get 'personale' 
end 

Это создает следующие маршруты:

    policy_miljoe GET /politik/miljoe(.:format)      policy#miljoe 
       policy_kvalitet GET /politik/kvalitet(.:format)     policy#kvalitet 
        policy_kunde GET /politik/kunde(.:format)      policy#kunde 
       policy_personale GET /politik/personale(.:format)     policy#personale 

Короткие маршруты и правильные пути. Это все отлично, за исключением ... Он выглядит в приложении/контроллерах для контроллера, а не в приложении/контроллерах/публике. Добавление

namespace :policy, path: 'politik', controller: 'public/policy' do 

не делает трюк.

Мой единственный «решение» до сих пор было создать поддельный маршрут ресурсов, указывающий на контроллер и сделать дополнительные маршруты сбора, как это:

resources :policy, path: 'politik', controller: 'public/policy', only: [] do 
    collection do 
    get 'miljoe' 
    get 'kvalitet' 
    get 'kunde' 
    get 'personale' 
    end 
end 

Это работает, но

  • Присоединяет индексируйте помощники URL-адресов без видимых причин, поэтому вместо policy_miljoe_path я получаю miljoe_policy_index_path.
  • читается странным образом, потому что ресурсы подразумевают спокойствие, и нет ничего спокойного в этих страницах.

Как лучше/наиболее элегантно объявить эти статические страницы в маршрутизаторе и поддерживать структуру URL-адрес, который выглядит отличается от моей структуры каталогов /politik/kvalitet в маршрутизаторе, но /public/policy/kvalitet в структуре папок?

ответ

0

Я закончил с использованием scope, который решает проблему полностью:

scope module: 'public' do 
    namespace :policy, path: 'politik' do 
    get 'miljoe' 
    get 'kvalitet' 
    get 'kunde' 
    get 'personale' 
    end 
end 

Это дает следующие хелперов, адреса и действия.

policy_miljoe GET /politik/miljoe(.:format)  public/policy#miljoe 
    policy_kvalitet GET /politik/kvalitet(.:format)  public/policy#kvalitet 
    policy_kunde GET /politik/kunde(.:format)  public/policy#kunde 
policy_personale GET /politik/personale(.:format) public/policy#personale 
Смежные вопросы