2010-10-02 69 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