Ruby on rails Rails,获取URL/modelstuff/31的一部分——如何获取31?

Ruby on rails Rails,获取URL/modelstuff/31的一部分——如何获取31?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我感兴趣的是学习Rails 3,如何使用类似于params[:urlpath] 然后用/ 因此,如果我有一个类似url的示例: /books/1 /books/1/authors/3 /books/1/authors/3/chapters /books/1/authors/3/chapters/33 我总能得到1 类似于params[:urlpath]索引[2] 我需要它来填充页面上发生的以下内容: $.ajax({ url: '/nav/sidenav', data: "ur

我感兴趣的是学习Rails 3,如何使用类似于
params[:urlpath]

然后用/

因此,如果我有一个类似url的示例:

/books/1
/books/1/authors/3
/books/1/authors/3/chapters
/books/1/authors/3/chapters/33
我总能得到1

类似于
params[:urlpath]索引[2]

我需要它来填充页面上发生的以下内容:

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

想法?thxs将以下内容添加到routes.rb中:

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

然后,如果您的URL看起来像
/books/1/authors/3/chapters/33,您可以使用
参数[:id]

那么你的路线应该是:

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

有点神奇。

我正在通过/nav/sidenav调用AJAX以获取子导航,我需要知道当前页面的URL以知道如何正确填充nav/sidenav,这就是为什么params[:id]在这种情况下不起作用,但我相信我需要sidenav来确定id。。想法?@WozPoz-你应该看看关于路由和requests@WozPoz-因为它提供了关于各种方法的信息来做你想做的事情。ok在上面添加了AJAX调用来帮助清除用例。谢谢,伙计,真酷。但在上面提到的情况下,我不会打电话给控制器。我正在调用app/controllers/nav,您的url应该是/nav?book\u id=1和author\u id=3和chapter\u id=33