2009-07-03 5 views
1

Как написать маршрут, который отображает такой путь?Вложенная маршрутизация

/PowerUsers/боб/статьи титульный

Это то, что я до сих пор:

map.resources :users, :as => "powerusers" do |users| 
    users.resources :articles, :as => '' 
end 

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

/PowerUsers /: user_id //: id

Как избавиться от двойного backslah?/PowerUsers/админ // первая статья-?

С уважением. Asbjørn Morell

ответ

4

Хорошо, если вам не нужен промежуточный вложенный ресурс (/ articles), я бы вообще не использовал map.resources.

Try:

map.connect '/powerusers/:user_id/:article_title', :controller => 'articles', :action => 'view_by_title' 
+0

дает мне: /powerusers/:user_id/admin/:id(.:format) {: контроллер => "статьи ",: action =>" show "}:/ – atmorell

+0

Сладкий :) Большое спасибо. – atmorell

+0

Рад, что я мог бы помочь! –

1

Если добавить ...

map.resources :users, :as => "powerusers" do |users| 
    users.resources :entries, :as => 'article-title' 
    end 

Я получаю ниже маршруты, которые включают в себя тот, который вы хотите ...

(Запасной "статьи" для «записей» для вашей ситуации.)

   GET /powerusers(.:format)         {:controller=>"users", :action=>"index"} 
       POST /powerusers(.:format)         {:controller=>"users", :action=>"create"} 
       GET /powerusers/new(.:format)        {:controller=>"users", :action=>"new"} 
       GET /powerusers/:id/edit(.:format)      {:controller=>"users", :action=>"edit"} 
       GET /powerusers/:id(.:format)        {:controller=>"users", :action=>"show"} 
       PUT /powerusers/:id(.:format)        {:controller=>"users", :action=>"update"} 
       DELETE /powerusers/:id(.:format)        {:controller=>"users", :action=>"destroy"} 
    user_entries GET /powerusers/:user_id/article-title(.:format)   {:controller=>"entries", :action=>"index"} 
       POST /powerusers/:user_id/article-title(.:format)   {:controller=>"entries", :action=>"create"} 
new_user_entry GET /powerusers/:user_id/article-title/new(.:format)  {:controller=>"entries", :action=>"new"} 
edit_user_entry GET /powerusers/:user_id/article-title/:id/edit(.:format) {:controller=>"entries", :action=>"edit"} 
    user_entry GET /powerusers/:user_id/article-title/:id(.:format)  {:controller=>"entries", :action=>"show"} 
       PUT /powerusers/:user_id/article-title/:id(.:format)  {:controller=>"entries", :action=>"update"} 
       DELETE /powerusers/:user_id/article-title/:id(.:format)  {:controller=>"entries", :action=>"destroy"} 
+0

Это адрес, который я ищу: /powerusers/:user_id/:id(.:format) Я хочу скрыть второе имя контроллера - заголовок статьи в вашем примере – atmorell

1

Вместо гнездования, будет ли это работать?

Я думаю, что это не будет, но быстрый тест сказал бы лучше :)

+0

Просто попробовал, и результат/powerusers /: user_id/articles /: id (.: format) {: controller => "articles",: action => "show"} Я пытаюсь избавиться от статьи из URL-адреса. – atmorell

+0

Я просто бросаю идеи здесь (не то, что я знаю, о чем я говорю). Вы пробовали: as => nil вместо: as => ''? –

+0

np :) Jep, попробовал с: as => nil/false. – atmorell

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