Ruby on rails 3.1 没有路由错误,但具有rake路由中的路由
这是我的路由文件:Ruby on rails 3.1 没有路由错误,但具有rake路由中的路由,ruby-on-rails-3.1,routes,Ruby On Rails 3.1,Routes,这是我的路由文件: devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } resources :users do post 'update_and_sign_in', :on => :member end 以下是rake路由的输出: update_and_sign_in_user POST /users/:id/update_a
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
resources :users do
post 'update_and_sign_in', :on => :member
end
以下是rake路由的输出:
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"}
您的路线是一个POST,但您在表单中的方法被放置。只是为了澄清:哪个控制器是:
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::OmniAuthCallbackController