Tôi có một bộ điều khiển đăng ký tùy chỉnh, nhưng tôi không muốn ghi đè hành động tạo ra. Khi tôi cố gắng đăng ký người dùng, tôi nhận được lỗi này:Ruby on Rails: Bộ điều khiển đăng ký Devise tùy chỉnh, yêu cầu tạo hành động
Unknown action
The action 'create' could not be found for Devise::RegistrationsController
Có yêu cầu bởi vì tôi có bộ điều khiển đăng ký tùy chỉnh không? Nếu vậy, điều đó có nghĩa là tôi cần phải sao chép tất cả các hành động mà tôi không ghi đè từ đây: https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb
Hoặc vì có sự cố với đơn đăng ký của tôi?
tuyến đường của tôi:
devise_for :user, :controllers => { :registrations => "devise/registrations" }, :skip => [:sessions] do
get 'signup' => 'devise/registrations#new', :as => :new_user_registration
post 'signup' => 'devise/registrations#create', :as => :user_registration
end
Đây là của tôi điều khiển đăng ký devise
class Devise::RegistrationsController < DeviseController
skip_before_filter :require_no_authentication
def edit
@user = User.find(current_user.id)
@profile = Profile.new
end
def update
# required for settings form to submit when password is left blank
if params[:user][:password].blank? && params[:user][:password_confirmation].blank?
params[:user].delete(:password)
params[:user].delete(:password_confirmation)
end
@user = User.find(current_user.id)
if @user.update_attributes(params[:user])
set_flash_message :notice, :updated
# Sign in the user bypassing validation in case his password changed
sign_in @user, :bypass => true
redirect_to after_update_path_for(@user)
else
render "edit"
end
end
protected
def after_update_path_for(resource)
user_path(resource)
end
def after_sign_up_path_for(resource)
user_path(resource)
end
end
Đây là hình thức đăng ký:
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
...
<div>
<%= button_tag :type => :submit, :class => "btn btn-large btn-inverse" do %>
Sign up
<% end %>
</div>
...
<% end %>
Điều đó có hiệu quả. Tại sao nó không thể được đưa ra như một tên thư mục? – hellomello
thực sự, tôi nghĩ rằng nó có thể là) nhưng tôi thường tuân thủ quy ước đặt tên đường ray để có được trải nghiệm đau đớn khi gỡ lỗi các ứng dụng như vậy: lỗi có xu hướng ở những nơi rất bất ngờ và thường là lý do duy nhất . –
@RoaringStones bạn đang thiếu 's' và kết thúc đăng ký. Tên phải được đăng ký_controller.rb – Ricbermo