rails中用户友好的嵌套路由

时间:2011-02-15 19:03:14

标签: ruby-on-rails ruby routes

我是一个ruby / rails新手,并且在组和用户(用户belongs_to组)之间有一个belongs_to关系。

我想要以下类型的网址:

www.mysite.com/abcd/user/1 - (注意“组”不是URL的一部分)

其中abcd是组名,1是用户ID。 这很容易吗?我该怎么做呢?

谢谢!

2 个答案:

答案 0 :(得分:1)

我不确定,但试试这个:

scope :path => '/:group_name' do
  resources :users
end

如果您使用此方法,则必须按params[:group_name]找到您的论坛。

答案 1 :(得分:1)

是的,在Rails 2和3中都很容易做到。

假设您正在使用Rails 3,您可以这样做

match ":group/user/:id", :to => "group#user"

当你使用匹配方法时,带有前一个冒号的URL部分将成为参数,因此在你的控制器中你可以使用params [:group]和params [:id]。 :to paramater定义控制器和动作,因此在这个例子中它会将请求发送给GroupController和用户动作。 :实际上可以指向任何Rack应用程序的终点,“cont#action”只是一个简写。

如果您正在使用资源,您可以正常设置这些资源,然后在堆栈中的其他位置定义此非标准路由,并且两者都将并排运行。