重新排列URL的部分结果来自Rails中的link_to

时间:2010-06-02 01:30:11

标签: ruby-on-rails routes urlhelper

这就是我现在正在做的事情:

link_to "Profile", :controller => "profiles", :action => "asked", :id => @profile
# => <a href="/profiles/asked/1">Profile</a>

网址<a href="/profiles/1/asked">Profile</a>更有意义吗? Profile 1询问了一些question个问题,因此我觉得网址更像是/:controller/:id/:action

如果您同意,我该如何做到这一点?

如果您不同意,请告诉我原因。 (我是Ruby on Rails的新手,所以我还是习惯了MVC惯例。)

任何建议都会很棒!

1 个答案:

答案 0 :(得分:1)

是的,你可以!这是命名路线的情况!您所要做的就是,在您的route.rb中添加以下链接:

map.asked 'profiles/:id/asked', :controller => 'profiles', :action => 'asked'

可以使用ask_path(:id =&gt; @profile)调用此路由 只需将视图中的link_to更改为:

即可

link_to "Profile", asked_path(:id => @profile)

我不配得到这个,因为我只是从routes.rb文件中取出它。如果仔细查看自动生成的routes.rb,您会看到:

  # Sample of named route:
  #   map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase'
  # This route can be invoked with purchase_url(:id => product.id)

如果你想让它更通用,我还没试过..但我想它应该可以工作:

map.routeany ":controller/:id/:action"

并在视图中:

link_to "Route to something...", routeany_path(:controller => "somecontroller", :action => "someaction", :id => @somecontroller)

无论如何,干杯! :)