我想在我的一个控制器上执行#show操作的虚荣URL。我已经设置了这条路线:
match "/:username" => "users#show", as: :show_user
我真的希望能够使用这个虚荣URL以标准方式链接到用户节目,如下所示:
link_to("foo", user)
谢谢!
答案 0 :(得分:3)
Jesse Wolgamott有正确的想法,但有几个笔记......
这应该位于routes.rb的底部,这样它就不会破坏任何其他路径
resources :users, :path => '/'
UsersController#节目
@user = User.where(:username => params[:id])
答案 1 :(得分:0)
使用当前路径设置执行此操作的一种(略微详细)方法是
link_to "foo", show_user_path(user)
或者,
show_user_url(user)
帮助程序以使用user.username而不是user.id link_to
调用polymorphic_url
,调用build_named_route_call
您可以使用monkey-path build_named_route调用自定义路由而不是常规user_url
。 不幸的是,没有公开的api /配置可以让这种情况干净利落。
答案 2 :(得分:0)
<强>的routes.rb 强>
resources :users, :path => '/'
<强> user.rb 强>
def to_param
username.parameterize
end
如果有Bob的用户名,则<%= link_to user.username, user%>
将创建
<a href="/bob">Bob</a>