私は工夫とdevise_invitable(オーバーライドコントローラ上の公式ドキュメントへのリンク)でのRailsアプリを持って、私は工夫/招待状/ new.html以内に現在招待されたユーザのリストを表示するdevise_invitable invitations_controller.rb
を行っています.erb。 deviseビューとdevise_invitableビューはそれぞれapp/views/devise
とapp/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のデフォルトビューの両方を使用しています。
下に移動しましたか? – bcd
犯人が私のスーパーステートメントであることが判明しました。レンダリングが呼び出されているので、実際に@invited_usersには決して行きませんでした。 – Dotol