0

認証にdevise(2.2.3)を使用して基本的なrails3.2アプリを開発しました。次に、ユーザーアカウント/プロファイル設定のサポートを追加する必要があります。エンドユーザーが更新できる(プロファイル/アカウントの)追加の属性は、ユーザーモデルの一部です。

これをどのようにサポートできるかについての提案が必要ですか?UsersControllerのどのアクションが要件を満たしますか?同じためにUsersControllerに編集アクションを追加しました。「レーキルート」を実行すると、次のようになります。

    new_user_session GET    /users/sign_in(.:format)       devise/sessions#new
        user_session POST   /users/sign_in(.:format)       devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy
       user_password POST   /users/password(.:format)      devise/passwords#create
   new_user_password GET    /users/password/new(.:format)  devise/passwords#new
  edit_user_password GET    /users/password/edit(.:format) devise/passwords#edit
                     PUT    /users/password(.:format)      devise/passwords#update

cancel_user_registration GET / users / cancel(.: format)devise / registerrations#cancel user_registration POST / users(.: format)devise / registerrations#create new_user_registration GET / users / sign_up(.: format)devise / registerrations#new edit_user_registration GET / user /edit(.:format)devise/registrations#edit PUT / users(.:format)devise / registerrations#update DELETE / users(.:format)devise / registerrations#destroy edit_user GET / users /:id / edit(。: format)users#edit user GET / users /:id(.: format)users#show root / home#index

編集フォームが送信されると、フォームはPUTを使用して「/ users / 1 / edit」にメッセージを送信し、[PUT]「/ users / 1/edit」に一致するルートがないというルーティングエラーが発生します

これはユーザー設定を変更する正しい方法ですか?フォームは「PUT」で投稿する必要がありますか?もしそうなら、どうすれば上記のようにGETの代わりにPUTでルートエントリを作成できますか?

前もって感謝します。

4

2 に答える 2

0

Userユーザーが「自分の」オブジェクトを更新できるようにしたい場合は、 routes.rb. 何かのようなもの:

resource :users => [:edit, :update]

/users/:idフォームはnotに PUTing する必要があり/users/:id/editます。

これがセットアップされると、フォーム ヘルパーを使用して、ユーザーがオブジェクトを編集するためのフォームを作成できるようになりUserます。ここでセキュリティを考慮し、アクセスできないフィールドを更新しないようにする必要があります。

Rails が PUT リクエストを実行するのは正しいことです。Rails の主要なテナントの 1 つは、すべてを RESTful にしようとすることだからです。

于 2013-02-20T19:51:41.800 に答える