2

現在、私のURLは次のようにレンダリングされています

/users/2/products

Friendly_id を使用してレンダリングできることを知っています

/users/username/products

しかし、私はそれを望んでいません。私のデータベースには、 -などのエントリを持つUserフィールドがあります。だから、私はしたいですroleworkerjanitor

/users/2/products

なので

/worker/username/products or /janitor/username/products and so on..

どうすればいいのですか ?Friendly_id を使用してそれを行うことはできますか?

4

1 に答える 1

5

わかりませんfriendly_id。あなたが何を求めているのかさえ確信が持てませんが、カスタム ルートを定義する必要があることがわかります。

カスタム ルートの追加

ルートファイルに追加できます

match "/worker/:username/products" => "users#show"

アクションで、:usernameパラメーター変数を確認します。

if params[:username]
  @user = User.find_by_name(params[:username])
else
  @user = User.find(params[:id])
end

特定のケースのルート

あなたの場合、route.rbでこれが必要なようです:

match "/:role/:username/products" => "users#show"

これはあなたのアクションでパラメータを使用するために:

User.where("role = '?' and username = '?', pararms[:role], params[:username]) 

ルートは、とを使用/worker/fotanus/products/してアクションUser#showで終了するような URL へのアクセスを作成します 。params[:role] = 'worker'params[:username] = 'fotanus'

于 2013-05-03T17:50:22.610 に答える