gpt4 book ai didi

ruby-on-rails - 设计未定义的方法 'registration_path'

转载 作者:行者123 更新时间:2023-12-04 16:30:39 33 4
gpt4 key购买 nike

正在开发我的应用程序并安装和卸载几个 gem,然后突然设计的东西停止工作,我不知道为什么。我不断收到以下错误:

NoMethodError in Recipes#index
undefined method `registration_path' for #<#<Class:0x00560876ed7ef0>:0x00560876f06430>

它指的是我的注册和这段代码

<%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name), validate: true) do |f| %>
<%= devise_error_messages! %>
<%= f.input :email, validate: true, required: true, placeholder: "Email", label: false %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %>
<%= f.input :password, autocomplete: "off", required: true, placeholder: "Password", label: false %>
<%= f.input :password_confirmation, autocomplete: "off", required: true, placeholder: "Confirm Password", label: false %>
<%= f.input :firstname, required: true, placeholder: "First Name", label: false %>
<%= f.input :lastname, required: true, placeholder: "Last Name", label: false %>
<%= f.input :displayname, validate: true, placeholder: "Display Name", label: false %>
<div class="recaptcha">
<%= recaptcha_tags %>
</div>
<%= f.button :submit, "Sign up", class: 'btn btn-primary' %>
<% end %>

在我的 routes.rb 我有这个:

Rails.application.routes.draw do
devise_for :users, controllers: { registrations: 'registrations', omniauth_callbacks: "callbacks" }

这是注册 Controller :

class RegistrationsController < Devise::RegistrationsController

def sign_up_params
params.require(:user).permit(:firstname, :lastname, :displayname,
:email, :password, :password_confirmation)
end

def account_update_params
params.require(:user).permit(:firstname, :lastname, :displayname,
:email, :password, :password_confirmation)
end

def create
if !verify_recaptcha
flash.delete :recaptcha_error
build_resource(sign_up_params)
resource.valid?
resource.errors.add(:base, "There was an error with the recaptcha code below. Please re-enter the code.")
clean_up_passwords(resource)
respond_with_navigational(resource) {render :new}
else
flash.delete :recaptcha_error
super
end
end

def after_inactive_sign_up_path_for(resource)
'/pages/confirm_email'
end
end

我在用户模型和 Controller 中有标准的设计东西,它们没有任何改变,但它停止了工作。不知道如何解决这个问题

编辑:rake 路由显示由于某种原因没有注册路径:

                               Prefix Verb     URI Pattern                                                             Controller#Action
rails_admin /admin RailsAdmin::Engine
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
user_google_oauth2_omniauth_authorize GET|POST /users/auth/google_oauth2(.:format) callbacks#passthru
user_google_oauth2_omniauth_callback GET|POST /users/auth/google_oauth2/callback(.:format) callbacks#google_oauth2
user_facebook_omniauth_authorize GET|POST /users/auth/facebook(.:format) callbacks#passthru
user_facebook_omniauth_callback GET|POST /users/auth/facebook/callback(.:format) callbacks#facebook
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
new_user_confirmation GET /users/confirmation/new(.:format) devise/confirmations#new
user_confirmation GET /users/confirmation(.:format) devise/confirmations#show
POST /users/confirmation(.:format) devise/confirmations#create

好的,所以这个错误让我感到困惑。我正在使用 docker-compose 进行开发,并重建了容器和图像。删除所有内容并重新开始。设计的注册设置中的某些东西搞砸了,不知道在哪里看它是否正确。所以当我去: localhost:8000/users/sign_in 一切正常,它进入设计登录页面......但是当我去 localhost:8000/users/sign_up 它说 Couldn't find User with 'id'=sign_up。它就像 devise_for :users 被忽略了注册的东西,不知道在哪里寻找那个原因这都是 gem 内部的......我认为

最佳答案

因此,经过数小时挖掘我的代码,与我的旧代码进行比较并在谷歌上搜索我能想到的所有设计和注册组合。我偶然发现了这个问题,这很愚蠢......在编辑我的 User.rb 模型时,我不小心从设计模块中删除了 :registable 。这就是它没有生成注册路由的原因。所以从这里修复了我的代码行:

class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable,
:omniauthable, omniauth_providers: [:google_oauth2, :facebook]

到这个:

class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable,
:omniauthable, omniauth_providers: [:google_oauth2, :facebook]

不确定在哪里或如何被删除,但它确实被删除了,因为我在查看我的代码时没有注意到它位于 block 的中间

关于ruby-on-rails - 设计未定义的方法 'registration_path',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45850112/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com