3

Railsコントローラーでreturntoを使用しようとすると問題が発生します。これは機能していません:

class UsersController < ApplicationController
respond_to :json

    def create
        @user = User.create params[:user_info] 
        respond_with @user
    end
end

これは機能します:

class UsersController < ApplicationController
respond_to :json

    def create 
        @user = User.create params[:user_info] 
        respond_with @user do |format|
              format.json { render json: @user.to_json }
        end
    end
end

なんで?これは、機能しないサーバーを使用したときにサーバーのログに表示されるエラーです。

NoMethodError (undefined method `user_url' for #<UsersController:0x007fd44d83ea90>):
app/controllers/users_controller.rb:7:in `create'

私のルートは:

resources :users, :only => [:create]
4

1 に答える 1

4

responds_withにリダイレクトしようとします。ルートはメソッドのみに制限されているため、ユーザーコントローラーでメソッドuser_urlが検索さshowれますが、これはありません。createcreateメソッドはデフォルトでshowメソッドにリダイレクトするため、これは機能しません。ただし、2番目のバージョンでは、実際に何かをレンダリングしているため、リダイレクトは発生しません。

次のように、それが必要な場合に:locationオプションを指定できます。respond_with

respond_with(@user, :location => home_url)

または、2番目のバージョンと同じようにレンダリングバージョンを使用します。

于 2012-11-07T15:11:18.253 に答える