这就是我现在正在做的事情:
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惯例。)
任何建议都会很棒!
答案 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)
无论如何,干杯! :)