DEVISE::RegistrationsController#CREATE中的错误

gmxoilav  于 2022-10-15  发布在  Ruby
关注(0)|答案(3)|浏览(116)

当我在用RoR和Devise开发的项目中填写“注册”页面并提交时,我收到了上面的错误。有人能提供解决方案吗?
我是一个刚开始学习RoR的新手,用免费的YT课程“Learn Ruby on Rails - Full Course”,目标是创建一个“好友”通讯录,然后让人们注册并创建自己的通讯录。按照说明操作,我已经在我的Windows10机器上安装了RoR,并使用scaffold创建了通讯录。然后使用Bootstrap设置视图/网页的样式。如视频所示,这一切都在我的本地机器上运行。
现在我正在为用户管理安装Devise。根据YT讲师的说法,我已经安装了这个GEM,并对照了Devise的“入门”指南进行了检查。根据创建的新路线,在导航栏中添加了一些新视图(即注册、登录、注销、编辑配置文件)。
现在,当讲师使用YT视频上的“注册”页面时,它会显示“成功...”注意。当我尝试时,注册页面显示正确,但当点击提交时,我得到错误:
“Devise::RegistrationsController#为#Devise::RegistrationsController:0x0000000000cbc0创建未定义的方法‘User_url’时出现NoMethodError”
然后就会有很多行的东西(我应该粘贴吗?)然后是这个红色的盒子,上面有:

**异常原因ActionView::MissingTemplate:缺少模板Devise/Registrations/Create,Devise/Create,Application/Create With{:Locale=>[:en],:Forms=>[:html],:Variants=>[],:Handler=>[:Raw,:Erb,:html,:Builder,:Ruby,:jBuilder]}。搜索范围:“C:/RailsFriends/Friends/APP/Views”“C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/devise-4.8.1/app/views”“C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/actiontext-7.0.0/app/views”“C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/actionmailbox-7.0.0/app/view“你的意思是?设计/注册/编辑设计/注册/新设计/邮件程序/确认说明设计/邮件程序/重置密码说明设计/密码/编辑设计程序/邮件程序/电子邮件更改

我注意到,虽然这本YT指南只有一年多一点的时间,但一些安装说明已经过时了,我不得不搜索才能正确安装RoR。那么,也许他精心设计的说明中的某些内容现在已经过时了?
我看了关于这个主题的其他问题,但我看不出它们是相关的。This one已经7岁多了,似乎有加密问题(我没有出现这个错误),this one似乎也没有解决我的问题。我甚至在reddit上发现了this answer,这与我的问题无关,但我注意到回答的人说用户永远不应该再使用Scaffold!
在我的搜索中,我注意到一个回滚数据库迁移的选项。如果我没有按照“T”的说明去做,并且找不到这个问题的解决方案,这是不是可以起作用呢?
谢谢你的帮助。

pkmbmrz7

pkmbmrz71#

根据您提供的错误消息,看起来您可能定义了错误的路由,或者您可能已经自定义了Devise::RegistrationsController的控制器。如果您已经用Devise正确地配置了路由,我想问题出在后一个。
确保您已使用Devise的说明定义了路由,并确保您希望在注册后将用户重定向到何处:


# routes.rb

resource :user # <= here

检查是否正确定义了路由:


# in the terminal app

rake routes

# => lists the routes you've defined

并确保已经构建了相关的控制器。

osh3o9ms

osh3o9ms2#

您可以通过将data: {turbo: false}添加到视图中的路径帮助器来解决此问题。
例如app/views/devise/registrations/new.html.erb
你可以改变

`<%= form_for(resource, as: resource_name, url: registration_path(resource_name) do |f| %>`

看起来像

<%= form_for(resource, as: resource_name, url:registration_path(resource_name), data: {turbo: false}) do |f| %>
mnowg1ta

mnowg1ta3#

我发现这个解决方案对我有效,因为我在注册时遇到了同样的错误。
关闭服务器。导航到配置/初始化器/devise.rb
我把第266行改为:

config.navigational_formats = ['*/*', :html, :turbo_stream]

然后我在终端中执行了rails db:migrate并重新启动了服务器。现在似乎起作用了。

相关问题