0

デフォルトでは、Rails は RESTful ルートを設定する 2 つの方法を提供します (:idセグメントは整数制約です/[0-9]/+)。

 1. site.com/users/10/homes/15
 2. site.com/user/homes/15

最初のバリアント:

コントローラー:UsersControllerおよびHomesController

あなたのルート:

resources(:users) do  #=> plural, so the url path is /users/10, :id segment possible
    resources(:homes) #=> plural, so the url path is /homes/10, :id segment possible
end

2 番目のバリアント:

コントローラー:UsersControllerおよびHomesController

あなたのルート:

resource(:user) do    #=> singular, so the url path is /user, no :id segment
    resources(:homes) #=> plural, so the url path is /homes/10, :id segment possible
end

しかし、これらの URL は見栄えがよくありません。私は彼らがこのようになりたい:

site.com/bugsbunny123/homeinny

最初と 2 番目のセグメントは正規表現ですが、まだコントローラーに接続されてUsersおりHomes、RESTful です。非リソースフルルートを使用してそれを達成する方法を知っています。:via => POSTしかし、:via => PUT:exceptなどを使用して、それぞれをコントローラーの RESTful メソッドにマップするのは非常に面倒です。

私はこのようなものが欲しい:

:users => /[A-Za-z0-9]+/
resource(:users) do ...

またはこのように:

resource(/[A-Za-z0-9]+/ => :users) do ...

/users/10アイデアは、デフォルトの RESTful ルーターが現在提供しているハードコーディングの代わりに、regexp ユーザー名を使用することです。

まだ使用して実装することは可能resource(:controller)ですか? または、非リソース ルートを使用する必要がありますか?

4

0 に答える 0