Rails路由与干净的网址

时间:2011-03-08 14:01:48

标签: ruby-on-rails

我的问题是我想删除此URL的查询字符串部分并使其清理。

http://staging.mysite.com/mycontroller?name=/philippines/about-manila

目前我有MyController.index()并在此方法中解析name参数。

我最终想要的是:

http://staging.mysite.com/mycontroller/philippines/about-manila

参数部分'philippines/about-manila'可以包含任意数量的参数,例如

http://staging.mysite.com/mycontroller/philippines/about-manila/people

我怎样才能在路线上这样做?

3 个答案:

答案 0 :(得分:4)

听起来你想要route globbing。如果您使用:

map.my_route '/mycontroller/*parts',
             :controller => :mycontroller,
             :action => :index

然后转到网址http://staging.mysite.com/mycontroller/philippines/about-manila/people,然后系统会调用mycontroller控制器的index操作,params[:parts]将包含数组["philippines", "about-manila", "people"]。< / p>

答案 1 :(得分:2)

它真的是任意的 - 还是只是变量?

如果它只是变量,您可以将可选参数括在括号中:

match '/:city(/:section(/:subsection))', :controller => :mycontroller,
    :action => :index

对于Rails 2.x:

map.connect '/:city(/:section(/:subsection))', :controller => :mycontroller,
    :action => :index

答案 2 :(得分:1)

对于Rails 2.x,您可以使用

map.my_route '/:my_param', :controller => :mycontroller, :action => :index

然后在您的控制器中,您可以访问

params[:my_param]

如果您想要链接,请使用

my_route_path(:my_param => "mytekst")