Rails 3虚荣URL与url_for集成

时间:2011-07-22 19:35:46

标签: ruby-on-rails ruby-on-rails-3 routes

我想在我的一个控制器上执行#show操作的虚荣URL。我已经设置了这条路线:

match "/:username" => "users#show", as: :show_user

我真的希望能够使用这个虚荣URL以标准方式链接到用户节目,如下所示:

link_to("foo", user)

谢谢!

3 个答案:

答案 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'。然后覆盖提供的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>