Rails Devise/Invitable

Rails Devise/Invitable

我有一个 Rails 带有设计和 devise_invitable 的应用程序(链接到关于覆盖控制器的官方文档),我做了一个 devise_invitable invitations_controller.rb 以显示 devise/invitations/new.html.erb 中当前受邀用户的列表。设计和 devise_invitable 视图分别在 app/views/deviseapp/views/devise/invitations 中,我的 devise/devise_invitable 控制器在 app/controllers/users/ 中。 Rails 在我的循环中的 invitations/new 视图中抛出一个 undefined method 'each' for NilClass

# app/views/devise/invitations/new.html.erb
<% @invited_users.each do |invited| %>
  omitting code...
<% end %>

# app/controllers/users/invitations_controller.rb
class Users::InvitationsController < Devise::InvitationsController
  def new
    super
    # This is not empty, returns multiple records in console
    @invited_users = User.where.not(invitation_sent_at: nil)
  end
end

# config/routes.rb
...
devise_for :users, controllers: { registrations: 'users/registrations', 
                                  invitations: 'users/invitations' }   
...
end

奇怪的是,当我将 app/views/devise 文件夹名称更改为 app/views/users 时,错误消失了,它显示了当前邀请的用户,但这会产生一个更大的问题,即应用程序现在使用 devises/devise_invitable 的默认视图。

原来罪魁祸首是我的 super 语句,渲染被调用所以它实际上从未到达@invited_users,我只是将它移到下面