无法在 gem Devise 中调整控制器,ruby on rails 4

Posted

技术标签:

【中文标题】无法在 gem Devise 中调整控制器,ruby on rails 4【英文标题】:Can't adjust Controller in gem Devise, ruby on rails 4 【发布时间】:2016-02-11 05:42:27 【问题描述】:

我在调整 gem 设计中的控制器时遇到了困难。在https://github.com/plataformatec/devise 上有配置控制器的指南:

    使用需要范围的生成器创建您的自定义控制器:

    rails generate devise:controllers [范围]

我输入:rails generate devise:controllers users

    告诉路由器使用这个控制器:

    devise_for :users, controllers: session: "users/sessions"

我在路由中添加了devise_for :users, controllers: sessions: "users/sessions"

    将视图从设计/会话复制到用户/会话。由于控制器已更改,它不会使用位于设计/会话中的默认视图。

我在 users 中创建了一个名为 sessions 的文件夹,并将视图从 devise/sessions 复制到 users/sessions

4.最后,更改或扩展所需的控制器操作。

此时,我应该可以调整控制器,但没有任何反应。例如,当我这样做时:

registrations/new.html.erb

<h2>Sign up</h2>

<% @user.each do |name|%>
    <%= name.username %>
<% end %>

users/registrations_controller.rb

class Users::RegistrationsController < Devise::RegistrationsController
# before_filter :configure_sign_up_params, only: [:create]
# before_filter :configure_account_update_params, only: [:update]

#   GET /resource/sign_up
   def new
     @user = User.all
     super
   end

  # POST /resource
  # def create
  #   super
  # end

什么都没有发生。我哪里做错了?您可以在此处访问代码:https://github.com/Metaphysiker/philosophica

提前致谢!

【问题讨论】:

您只是覆盖会话的路由 - 而不是注册。在控制台中运行“rake routes”以查看映射。 【参考方案1】:

首先看起来你输入了:

rails generate devise:controllers [users] [] 中的用户,所以你有一个名为 [users] 的文件夹 您可能想删除它。

但您的实际问题是您没有将视图移动到views/users/session 文件夹views/users 只有一个new.erb。把views/devise的内容复制到views/users就可以了。

另外你应该add devise_for :users, controllers: sessions: "users/sessions" , registrations: „users/registrations“ 到你的路线.rb

【讨论】:

以上是关于无法在 gem Devise 中调整控制器,ruby on rails 4的主要内容,如果未能解决你的问题,请参考以下文章

Rails, Devise, Postmark Gem - 使用邮戳模板设计邮件

Monkey patching Devise(或任何 Rails gem)

尝试加载 gem 'devise. ActiveSupport:持续时间不能强制转换为整数

bundle update --conservative devise 不只更新“设计”gem

查看gem devise的源代码

如何使用 Devise gem 生成的 User 模型生成的 UserID 作为其他模型的外键?