0

レールでは、デフォルトの動作は次のようにURLにIDを表示します

http://0.0.0.0:3000/users/1

URL を変更して ID 以外のものを表示するには、これをモデルに入れることができることを知っています。

def to_param
  name
end

そして、次のようなものを取得しますhttp://0.0.0.0:3000/users/mikey

どうすればTwitterスタイルのURLを実現できるのだろうと思っています。現在、モデル名はまだ URL に表示されています。http://0.0.0.0:3000/mikey機種名抜きでこんな感じ

4

2 に答える 2

0
  1. ユーザーの名前を格納するデータベース列の名前を取得します (「名前」としましょう)。

  2. config/routes.rb で、デフォルト ルートの上のどこかに次を追加します。

    match 'users/:name', :controller => 'users', :action => 'show'
    
  3. 次に、users_controller で def show を見つけて、次のように変更します。

    @user = User.find_by_name(params[:name])
    
  4. 最後に、ユーザーを指すすべての ID ベースの URL を更新して、名前ベースの変更を反映する必要があります。ユーザーの index.html.erb ファイルのように。

    link_to @user.name, 'users/#{@user.name}'
    
于 2013-06-10T04:56:33.467 に答える
0

ルート ファイルの下部付近 (ルート ルートのすぐ上) にルートを追加します。

get '/:id', :to => "users#show", :as => :friendly_user

これはフォールスルー ルートとして機能するため/anything、以前のルートでキャッチされなかったルートは、それに応じて にルーティングされusers#show、通過し:idます。friendly_user_path(@user)次に、そのユーザーの Twitter スタイルのプロファイルへのリンクを生成するために使用できます。

ユーザーが「ログアウト」などのユーザー名でサインアップして、/logoutページを自分のプロファイルに置き換えることは望ましくないため、これは優先度の最も低いルートの 1 つであることを確認してください。

于 2013-06-10T05:04:30.233 に答える