Rails设计/邀请

时间:2017-09-11 20:16:19

标签: ruby-on-rails devise devise-invitable

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

# 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时,错误消失并显示当前受邀用户但这会产生更大的问题,即应用现在同时使用这两个用户设计/ devise_invitable的默认视图。

1 个答案:

答案 0 :(得分:0)

原来,罪魁祸首是我的超级声明,渲染被调用所以它从未真正进入@invited_users,我只是将它移到了下面