2010-10-02 59 views
1

我感興趣的學習在Rails 3中,如何抓住URL的東西,如params[:urlpath]Rails,獲取URL/modelstuff/31的一部分---如何獲得31?

,然後用/

所以索引,如果我有一個像例子網址:

/books/1 
/books/1/authors/3 
/books/1/authors/3/chapters 
/books/1/authors/3/chapters/33 

我總是可以得到1

params[:urlpath] index[2]

I N eed這填充以下發生在頁面上:

$.ajax({ 
    url: '/nav/sidenav', 
    data: "urlpath=" + urlpath 
}); 

想法? thxs

回答

2

以下內容添加到您的routes.rb:

match '/modelstuff/:id' => "controller#method" 

然後你可以使用params[:id]

+0

我正在通過/ nav/sidenav進行AJAX調用以獲取子導航,我需要知道當前頁面的URL以瞭解如何正確填充nav/sidenav,這就是爲什麼params [:id]不會在這種情況下工作,但我相信我需要sidenav來確定ID ..想法? – WozPoz 2010-10-02 22:09:34

+1

@WozPoz - 你應該看一下關於路由的[Rails Guide](http://guides.rubyonrails.org/routing.html#non-resourceful-routes),並請求 – 2010-10-02 22:10:50

+0

謝謝。任何理由? – WozPoz 2010-10-02 22:11:47

1

如果您的網址看起來像/books/1/authors/3/chapters/33

那麼你的路線應該是:

resources :books do 
    resources :authors do 
    resources :chapters 
    end 
end 

這被稱爲嵌套路線。

然後,在你的控制器:

/app/controllers/chapters_controller.rb

def show 
    @book = Book.find(params[:book_id]) 
    @author = @book.authors.find(params[:author_id]) 
    @chapter = @author.chapters.find(params[:id]) 
end 

排序的魔力。

+0

非常酷。但在上面提到的情況下,我沒有調用chapters_controller。我打電話給app/controllers/navs – WozPoz 2010-10-02 23:52:59

+0

然後你的url應該看起來像/ nav?book_id = 1&author_id = 3&chapter_id = 33 – 2010-10-03 12:20:31