2011-07-22 13 views
3

私のコントローラの#showアクション用のバニティURLをお勧めします。url_for統合を使用したRails 3バニティURL

link_to("foo", user) 

ありがとう:私は本当にのように、ユーザーのショーにリンクするための標準的な方法で、この虚栄心のURLを使用できるようにしたいと思い

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

:私はセットアップこのルートをしました!あなたの現在のルート設定でこれを行うには

答えて

3

ジェシーWolgamottが持っているが作成されます権利アイデアが、カップルのノート...

これは、他のルートを壊していないように

resources :users, :path => '/' 

がUserController#は、うん

@user = User.where(:username => params[:id]) 
0

ワン(やや冗長)の方法は、

また

link_to "foo", show_user_path(user)

  • あなたは 'SHOW_USER' のあなたのルート 'の代わりに、ユーザーを' 名前可能性があります。そして、定期的にuser_urlの代わりにカスタムルートを呼び出すことbuild_named_route_callあなたは可能性が猿パスbuild_named_routeを呼び出すpolymorphic_urlを呼び出しlink_toカバー、下にuser.id
  • の代わりにuser.usernameを使用するために提供さshow_user_url(user)ヘルパーをオーバーライドします。

残念ながら、これを正常に行うための公開API /設定はありません。

+0

を示しroutes.rbをの一番下に行く必要があります私は今のようにセットアップを持っている: link_to "foo"、show_user_path(user.username) それは動作します。通常のCRUDのように動作させるのが理想的です。link_to – giantcola

+0

ユーザには 'resources'もマップされていますか?通常の 'link_to'が利用可能な最初のパスを選んでいるかもしれません。 – diedthreetimes

+0

リソースを削除して 'user'に名前を変更しようとしましたが、今すぐlink_to( "foo"、user)を実行すると、/ usernameの代わりに/ idが返されます。 – giantcola

0

routes.rbを

resources :users, :path => '/' 

user.rb

def to_param 
    username.parameterize 
end 

ボブのユーザ名がある場合、<%= link_to user.username, user%>

<a href="/bob">Bob</a> 
関連する問題