3

我有這樣的routes.rb中點與命名空間URL路徑軌3.1

root :to => "posts#index" 

    devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } 

    resources :users, :only => :show 

    resources :boards 

    resources :posts do 
    resources :comments 
    end 

namespace :users do 
resources :posts do 
    get :posts, :on => :member 
end 
resources :boards do 
    get :boards, :on => :member 
end 
end  

耙路線:

boards_users_board GET /users/boards/:id/boards(.:format)  {:action=>"boards", :controller=>"users/boards"} 
     users_boards GET /users/boards(.:format)     {:action=>"index", :controller=>"users/boards"} 
        POST /users/boards(.:format)     {:action=>"create", :controller=>"users/boards"} 
    new_users_board GET /users/boards/new(.:format)    {:action=>"new", :controller=>"users/boards"} 
    edit_users_board GET /users/boards/:id/edit(.:format)   {:action=>"edit", :controller=>"users/boards"} 
     users_board GET /users/boards/:id(.:format)    {:action=>"show", :controller=>"users/boards"} 

如果我把這個鏈接有兩個參數:

<% @posts.each do |post| %> 
    <%= link_to post.board.name, users_board_path(post.user, post.board) %> 
<% end %> 

我用點獲得下一個網址:

http://localhost:3000/users/boards/hyperrjas.board-2

  • hyperrjas的是,我已經把與塞的USER_ID:用戶名。
  • 我使用命名空間,因爲是嵌套的資源,我有一個用戶面板。

我的問題是:我如何更改斜槓/在我生成的網址點?的外觀和工作如下:

http://localhost:3000/users/boards/hyperrjas/board-2

回答

0

移動以下嵌套那些用戶的路線。 Rails將首先「捕捉」上層路線。

你的問題是真正的路由生成(也有一些訂購)。如果您需要訪問用戶板,則不需要namespaced路由,但需要nested路由。

如果您需要/users/:user_id/boards/users/:user_id/boards/:id您需要嵌套路線。請注意,在第二條路線中有2個參數(user_idid)。如果您使用命名空間路由,則只需「一個」(板id)。第二個參數是格式。注意,在rake路由的輸出中,你只需要「1」參數。

嘗試下一條路線,看它是否有效。

resources :users do 
    # This will give you /users/:user_id/posts 
    # and /users/:user_id/posts/:post_id 
    # among others 
    resources :posts 
    end 
+0

感謝您的回覆,我不明白你想要我什麼,你可以指定多一點?謝謝 – hyperrjas 2012-01-10 17:52:44

+0

我不確定是否應該使用'namespace'。你應該在那裏使用嵌套資源。 (我會張貼另一個答案) – Hock 2012-01-10 17:56:14

+0

謝謝,資源工作正常,但如果我使用資源的控制器**板**,我想與控制器**用戶/板**工作。這是我的問題如果我使用控制器**主板工作資源**,並且想要使用控制器**用戶/主板** – hyperrjas 2012-01-10 18:31:18