Ruby on rails 问题覆盖设计注册控制器
实际上,我正试图覆盖我的Desive注册控制器,但我面临一个问题。当我试图从窗体调用我的自定义注册控制器时,我的自定义注册控制器未被调用 routes.rb:Ruby on rails 问题覆盖设计注册控制器,ruby-on-rails,ruby,forms,devise,haml,Ruby On Rails,Ruby,Forms,Devise,Haml,实际上,我正试图覆盖我的Desive注册控制器,但我面临一个问题。当我试图从窗体调用我的自定义注册控制器时,我的自定义注册控制器未被调用 routes.rb: Rails.application.routes.draw do devise_for :users, controllers: { registrations: 'users/registrations' } end app/controller/users/registrations\u controller.rb class
Rails.application.routes.draw do
devise_for :users, controllers: { registrations: 'users/registrations' }
end
app/controller/users/registrations\u controller.rb
class Users::RegistrationsController < Devise::RegistrationsController
skip_before_action :verify_authenticity_token
#POST /users
def create
puts "ENTER"
#super
end
end
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception, prepend: true
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:firstname, :lastname, :address, :phone, :gender])
end
end
但当我从这个Haml表格中调用它时:
.form-zone-container
.form-zone
%form.form{"accept-charset" => "UTF-8", :action => "/users", :enctype => "multipart/form-data", :method => "post"}
.title
Personal informations
.radio-btn
#form_gender
%input#form_gender_1.check{"aria-required" => "true", :name => "user[gender]", :required => "required", :type => "radio", :value => "Male"}/
%label.required{:for => "form_gender_1"} Male
%input#form_gender_0.check{"aria-required" => "true", :name => "user[gender]", :required => "required", :type => "radio", :value => "Female"}/
%label.required{:for => "form_gender_0"} Female
%input{:name => "user[firstname]", :placeholder => "name", :type => "text", :value => (@params[:user]['firstname'] if @params[:user] && @params[:user]['firstname'])}/
%input{:name => "user[lastname]", :placeholder => "Last name", :type => "text", :value => (@params[:user]['lastname'] if @params[:user] && @params[:user]['lastname'])}/
%input{:name => "user[email]", :placeholder => "Email", :type => "email", :value => (@params[:user]['email'] if @params[:user] && @params[:user]['email'])}/
%input{:name => "user[password]", :placeholder => "password", :type => "password"}/
%input{:class => "confirm_password", :placeholder => "Confirm your password", :type => "password"}/
%input{:name => "user[phone]", :placeholder => "Phone", :type => "tel"}/
%input.place{:name => "user[address]", :placeholder => "Address", :type => "text", :value => (@params[:meeting]['address'] if @params[:meeting] && @params[:meeting]['address'])}/
%a.little-green-btn{:onclick => "$(this).closest('form').submit()"} Send
我得到那些日志:
Started POST "/users" for 127.0.0.1 at 2017-09-22 11:32:16 +0200
Processing by Users::RegistrationsController#create as */*
Parameters: {"user"=>{"email"=>"test@gmail.com", "password"=>"[FILTERED]", "firstname"=>"test", "lastname"=>"test1", "phone"=>"123456789", "address"=>"test", "gender"=>"test"}}
ENTER
No template found for Users::RegistrationsController#create, rendering head
:no_content
Completed 204 No Content in 1065ms (ActiveRecord: 0.0ms)
Started POST "/users" for 127.0.0.1 at 2017-09-22 11:39:37 +0200
Processing by Users::RegistrationsController#create as HTML
Parameters: {"user"=>{"gender"=>"Male", "firstname"=>"test", "lastname"=>"test", "email"=>"test@gmail.com", "password"=>"[FILTERED]", "phone"=>"test", "address"=>"test"}}
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 2], ["LIMIT", 1]]
Redirected to http://localhost:3000/
Filter chain halted as :require_no_authentication rendered or redirected
Completed 302 Found in 35ms (ActiveRecord: 3.8ms)
Started GET "/" for 127.0.0.1 at 2017-09-22 11:39:37 +0200
Processing by Rails::WelcomeController#index as HTML
Rendering /Users/admin/.rvm/gems/ruby-2.4.1@global/gems/railties-5.1.4/lib/rails/templates/rails/welcome/index.html.erb
Rendered /Users/admin/.rvm/gems/ruby-2.4.1@global/gems/railties-5.1.4/lib/rails/templates/rails/welcome/index.html.erb (2.5ms)
Completed 200 OK in 37ms (Views: 5.1ms | ActiveRecord: 0.0ms)
在最后一个例子中,我不知道发生了什么,我的日志中没有“Enter”。我注意到唯一的变化是:
用户处理::RegistrationsController#创建为*/*
到用户处理::RegistrationsController#创建为HTML
希望有人能帮我解决这个问题
提前感谢,
更新
耙路径
Prefix Verb URI Pattern Controller#Action
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
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
user_password PATCH /users/password(.:format) devise/passwords#update
PUT /users/password(.:format) devise/passwords#update
POST /users/password(.:format) devise/passwords#create
cancel_user_registration GET /users/cancel(.:format) users/registrations#cancel
new_user_registration GET /users/sign_up(.:format) users/registrations#new
edit_user_registration GET /users/edit(.:format) users/registrations#edit
user_registration PATCH /users(.:format) users/registrations#update
PUT /users(.:format) users/registrations#update
DELETE /users(.:format) users/registrations#destroy
POST /users(.:format) users/registrations#create
尝试使用表单_执行以下操作:
= form_for @user, url: "/users", html: {class: 'form'} do |f|
.title
Personal informations
.radio-btn
#form_gender
= f.radio_button(:gender, "Male", checked: true)
= f.label(:gender, "Male")
= f.radio_button(:gender, "Female")
= f.label(:gender, "Female")
= f.text_field(:firstname)
= f.text_field(:lastname)
= f.email_field(:email)
= f.password_field(:password)
= f.telephone_field(:phone)
= f.text_field(:address)
= f.submit("Send")
仍然得到相同的结果。您的方法是正确的,请尝试在您的注册控制器中的回调之前添加一个require\u no\u身份验证
before\u操作:require\u no\u身份验证,only::create
。尝试添加它,但没有成功,仍然面临相同的问题:(您能添加rails路由的输出吗?您的意思是rake路由
?只是f.y.i.rails路由命令在rails版本5+中使用,它们的作用相同