范围路线轨道3.1,它是如何工作的?

时间:2011-11-23 13:04:31

标签: ruby-on-rails ruby-on-rails-3 routing

我在我的routes.rb中有这个。

scope '/admin' do
  root :to => 'home#index'

  resources :posts do
    scope :information, :controller => 'information' do
      match 'description'
    end
  end
end

这给了我

post_description        /admin/posts/:post_id/description(.:format) {:action=>"description", :controller=>"information"}

它会导致我想要的控制器,但我需要在我的网址中包含信息,如下所示:

/admin/posts/:post_id/information/description(.:format)

我尝试使用命名空间,但需要地图结构信息/信息

我应该如何实现我想要的,我应该使用哪种路线策略? 我读了Rails routing guides 2次,但我仍然无法弄明白。 感谢。

1 个答案:

答案 0 :(得分:2)

这个怎么样:

scope '/admin' do
  root :to => 'home#index'

  resources :posts do
    resource :information, :only => [] do
      get 'description'
    end
  end
end

[编辑]

更像REST:REST /资源丰富的事情是构建可以提供信息的资源。因此资源information将提供有关GET的所有信息。如果描述是您获得的实际资源,那么它应该是posts/:id/description。如果描述是与信息链接的资源,那么您的路径确实是指定的。现在我们在这种情况下做的是构建我们的资源更像Atom,并链接到相关项目。 E.g。

<post>
  <title>....</title>
  <content> ... </content>
  <link rel="'self' href='link-to-self' />
  <link rel='information' href='link-to-information' />
</post>

在构建REST-API时,如果url变得很长并且嵌套嵌套嵌套,我们会认为它是一种气味。提供链接还允许探索API。

不确定这是否有帮助。