2017-09-11 17 views
0

私は工夫とdevise_invitable(オーバーライドコントローラ上の公式ドキュメントへのリンク)でのRailsアプリを持って、私は工夫/招待状/ new.html以内に現在招待されたユーザのリストを表示するdevise_invitable invitations_controller.rbを行っています.erb。 deviseビューとdevise_invitableビューはそれぞれapp/views/deviseapp/views/devise/invitationsであり、私のdevise/devise_invitableコントローラはapp/controllers/users/です。 Railsは私のループでinvitations/newビューでundefined method 'each' for NilClassをスロー:Railsの工夫/ Invitable

# 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 

奇妙なことは、私はアプリ/ビュー/アプリ/ビュー/ユーザーにフォルダ名を考案変更した場合、エラーがなくなって、それが現在表示されていることです招待されたユーザーが、この問題は大きな問題を引き起こします。つまり、このアプリケーションでは、/ devise_invitableのデフォルトビューの両方を使用しています。

+1

下に移動しましたか? – bcd

+0

犯人が私のスーパーステートメントであることが判明しました。レンダリングが呼び出されているので、実際に@invited_usersには決して行きませんでした。 – Dotol

答えて

0

は、犯人は私のスーパー声明だったことが判明し、それは実際に@invited_usersにやったことがなかったので、呼ばれていたレンダリング、私はちょうどあなたがバックトレースおよび招待状/新しいビューを共有することができ