Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 自定义Desive gem用户配置文件非常有效,但会导致注册、编辑等错误。。。[第5条]_Ruby On Rails_Devise_Routing_Rubygems_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails 自定义Desive gem用户配置文件非常有效,但会导致注册、编辑等错误。。。[第5条]

Ruby on rails 自定义Desive gem用户配置文件非常有效,但会导致注册、编辑等错误。。。[第5条],ruby-on-rails,devise,routing,rubygems,ruby-on-rails-5,Ruby On Rails,Devise,Routing,Rubygems,Ruby On Rails 5,我从网上找到的一些教程中添加了用户配置文件,链接到配置文件效果很好。但是现在我在用户注册方面遇到了问题 我假设,由于我已经为用户配置文件创建了users\u controller.rb,它现在正在查看users\u controller.rb中的所有操作。因此,关于注册,我添加了createdef,然后它要求defnew,然后defupdate等等。。。事情变得非常复杂,我犯了不同类型的错误 我的问题: 是否可以将所有操作重定向到默认设计注册、登录、更新。。。而我只为用户配置文件保留user_c

我从网上找到的一些教程中添加了用户配置文件,链接到配置文件效果很好。但是现在我在用户注册方面遇到了问题

我假设,由于我已经为用户配置文件创建了users\u controller.rb,它现在正在查看users\u controller.rb中的所有操作。因此,关于注册,我添加了createdef,然后它要求defnew,然后defupdate等等。。。事情变得非常复杂,我犯了不同类型的错误

我的问题: 是否可以将所有操作重定向到默认设计注册、登录、更新。。。而我只为用户配置文件保留user_controllers.rb

谢谢大家!

路线

控制器

class UsersController < ApplicationController
  def show
      @user = User.find(params[:id])
  end
end
class UsersController

设备中的布线和控制器 您的
config/routes.rb
确定对
URL发出的每个
GET/POST/PUT/PATCH
请求所触发的操作

您可以在下面的链接中阅读更多关于此的信息

当您配置设计时,您可以使用
routes.rb中的
设计
方法来设置路由

# config/routes.rb
Rails.application.routes.draw do
devise_for :users
end
要了解更多有关方法的信息,请阅读

design_for
将生成以下路由:

# Session routes for Authenticatable (default)
     new_user_session GET    /users/sign_in                    {controller:"devise/sessions", action:"new"}
         user_session POST   /users/sign_in                    {controller:"devise/sessions", action:"create"}
 destroy_user_session DELETE /users/sign_out                   {controller:"devise/sessions", action:"destroy"}

# Password routes for Recoverable, if User model has :recoverable configured
    new_user_password GET    /users/password/new(.:format)     {controller:"devise/passwords", action:"new"}
   edit_user_password GET    /users/password/edit(.:format)    {controller:"devise/passwords", action:"edit"}
        user_password PUT    /users/password(.:format)         {controller:"devise/passwords", action:"update"}
                      POST   /users/password(.:format)         {controller:"devise/passwords", action:"create"}

# Confirmation routes for Confirmable, if User model has :confirmable configured
new_user_confirmation GET    /users/confirmation/new(.:format) {controller:"devise/confirmations", action:"new"}
    user_confirmation GET    /users/confirmation(.:format)     {controller:"devise/confirmations", action:"show"}
                      POST   /users/confirmation(.:format)     {controller:"devise/confirmations", action:"create"}
如果客户端/浏览器通过url
/users/sign_in
向服务器执行
GET
请求,服务器将从文件夹
app/controllers/designe/sessions
中的控制器执行操作new

这就是我的视图生成的地方,即使我没有Desive控制器,它也是这样映射的

您可以使用以下语法覆盖此行为,如本部分所述:

devise_for :users, controllers: { sessions: 'users/sessions' }
这意味着对于
会话
您将使用位于文件夹
app/controllers/users/sessions
中的控制器,而不是
designe/sessions

您可以对此进行测试,生成路由,并查看如何获得每个操作的路由

最佳实践 从中建议的最佳实践只是生成designe控制器,该控制器将具有已与designe路由连接的操作。来自控制器的每个操作都将通过
super
设计控制器操作调用,如果您想增强或更改该逻辑,可以通过阅读

您可以向该控制器添加任何需要的操作,然后适当地配置路由

有关RubyonRails指南中的路由和控制器信息


感谢Fabrizio@Designer
designe\u的详细回复:用户
重定向到默认的designe控制器。您的
/app/controllers
中没有设备控制器,您可以生成一个控制器,向设备控制器调用
super
。设计控制器在您的gem中,您可以在github页面中查看它,它将在您的gem文件中。您可以在RVM或Rbenv文件夹中找到它,具体取决于您选择的内容use@Designer
design_for:users,controllers:{sessions:'users/',registrations:'users/',omniauth_回调:'users/',passwords:'users/')}
etc era不断将控制器从添加到此路由,但这是错误的方法。您应该增强定义的标准设计控制器,以便更好地理解设计代码,并检查其控制器
devise_for :users, controllers: { sessions: 'users/sessions' }