2011-01-27 5 views
1

、それはこのようRails3のRESTデザインでコントローラ名を削除するには?ユーザーリソースを考えると

を行く

/ユーザー/:短縮名

しかし、どのようにコントローラ名がちょうど

/を取得するために除去することができます:短縮名

どのように宣言することができますすべてのCRUD機能を瞬時に保ちながらroutes.rbでこれを実行しますか?

更新:thisを読んだ後、私はこのAPIライクなデザインをより良く扱うためにSinatra over Railsに移ります。ルートで

+0

あなたが何を意味するのか分かりません。 '/ users /:shortname'を意味しますか? –

+0

権利が更新されました。 – Martin

+0

私はこの質問が少なくとも3回前に尋ねられていると確信しています。私はそれらの1つに答えましたが、私はそれを見つけることができません... –

答えて

1

はカスタムマッチを定義します。

match ':shortname' => 'users#action' 

ユーザーの要求を受け取ることになっている、アクションの名前と#アクションアクションを交換してください。ルートファイルに適切な順番に配置することを忘れないでください。 Railsは、ルートファイルの各行を先頭から検索し、最初に一致するルートを選択します。 ':shortname'は/ usersを含む第1レベルのパスと一致します!したがって、すべてのリソースルートを含む第1レベルのパスを使用するすべてのルートの下に配置します。ここに例があります:

resources :users 
resources :posts 
match '/blog' => 'posts#index' 
match ':shortname' => 'users#action' 
+0

はい私はそれを知っています。しかし、何らかの理由ですべてのCRUDアクションを追加しても機能しません。また、同じコントローラに対して各アクションを宣言することを避けるために、よりクリーンな方法がありますか? – Martin

1

、あなたは

resource :users, :path => '/:shortname' 

期待通りにそれが出てくるかどうかを確認するためにそれを試してみてrake routesような何かを行うことができるはずです。

+0

それは動作しません。これは基本的に/:shortname /:shortnameのコントローラ名を置き換えるだけです。 – Martin

関連する問題