0

私のウェブサイトでは、ユーザーは 、 などを介してカテゴリにアクセスできますexample.com/category1example.com/category2したがって、次のようにルート ルールを記述します。

match '/:category' => 'home#category', :constraints => ShowCategory.new

ShowCategory は、ユーザーがアクセスしたカテゴリが存在することを確認するクラスです。同時に、ユーザーは自分の個人ドメイン名を指定できます。その後、ユーザーのプロファイル ページに のような URL を介してアクセスできますexample.com/peter。したがって、別のルート ルールがあります。

match '/:user_domain' => 'Profiles#show'

:constraintsfor カテゴリ ルートを使用しているため、ルートは競合しませんでした。ただし、アクションでは、 ではなく、Profiles#show常にパラメーターを取得します。{'category' => 'peter'}{'user_domain' => 'peter'}

パラメータ名を修正するにはどうすればよいですか? categoryプロファイル コントローラーで名前が付けられたパラメーターは必要ありません。

ありがとう。

4

1 に答える 1

0

ルートに名前を付ける方法はあまり意味がありません。ルーティングエンジンを混乱させています。ではcategories/1なくcategory1

to_paramプロファイルに関しては、最初のルールとメソッドで十分だと思います。

# routes.rb
profile '/:user_domain', controller: 'profiles', action: 'show'
resources :profiles
resources :categories
# profile.rb
def to_param
    self.user_domain
end
于 2012-08-20T19:40:54.053 に答える