У меня есть пользовательский контроллер регистрации, но я не хочу переопределять действие create из devise. Когда я пытаюсь зарегистрироваться пользователя, я получаю эту ошибку:Ruby on Rails: пользовательский контроллер регистрации объявлений, задающий вопрос о создании
Unknown action
The action 'create' could not be found for Devise::RegistrationsController
ли это просить за него, потому что у меня есть собственный контроллер регистрации? Если это так, значит ли это, что мне нужно скопировать все действия, которые я не переопределяю здесь: https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb
Или это потому, что в моем приложении что-то не так?
Мои маршруты:
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
Это мой Разрабатывают контроллер регистрации
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
Это форма регистрации:
<%= 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 %>
Это работает. Почему он не может быть создан как имя папки? – hellomello
на самом деле, я думаю, это может быть) , но я обычно следую за соглашениями об именах rails. У меня есть болезненный опыт отладки таких приложений: ошибки, как правило, находятся в очень неожиданных местах, и часто это единственная причина, по которой не соблюдалось какое-либо соглашение об именах , –
@RoaringStones вам не хватает 's' и конец регистрации. Имя должно быть registrations_controller.rb – Ricbermo