1

これが私のルートファイルです:

  devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

  resources :users do
    post 'update_and_sign_in', :on => :member
  end

レーキルートからの出力は次のとおりです。

update_and_sign_in_user POST   /users/:id/update_and_sign_in(.:format) users#update_and_sign_in
                   users GET    /users(.:format)                        users#index
                         POST   /users(.:format)                        users#create
                new_user GET    /users/new(.:format)                    users#new
               edit_user GET    /users/:id/edit(.:format)               users#edit
                    user GET    /users/:id(.:format)                    users#show
                         PUT    /users/:id(.:format)                    users#update
                         DELETE /users/:id(.:format)                    users#destroy

コントローラは次のとおりです。

  def update_and_sign_in
     @user = User.find(params[:id])
     if  @user.update_attributes(params[:user])
       redirect_to root_path, :notice => "You have successfully signed up"
     else
       render 'get_email' 
     end
  end

フォームは次のとおりです。

=form_for(@user,:url => update_and_sign_in_user,:method => "put", :html => {:class => 'well'}) do |f|

このエラーが発生しましたが、その理由や修正方法がわかりません。

No route matches {:action=>"update_and_sign_in", :controller=>"users"}
4

2 に答える 2

0

ルートは POST ですが、フォーム内のメソッドは PUT です。

于 2012-06-21T20:54:35.660 に答える
0

明確にするために:どのコントローラーが:

    def update_and_sign_in
      @user = User.find(params[:id])
      if  @user.update_attributes(params[:user])
        redirect_to root_path, :notice => "You have successfully signed up"
      else
       render 'get_email' 
      end
    end

の上?UsersController または Users::OmniauthCallbacksController ?

于 2012-10-31T01:36:52.687 に答える