Rails:devise_invitable不接受变量

时间:2019-05-22 20:05:49

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

我当前正在尝试显示当前用户邀请的所有用户,但是由于@users始终为nil,因此无法正常工作。

我正在http://localhost:3000/inivtation/new上尝试

我的InvitationsController

...
    def new
     super
     @users = User.all # This also doesn't work
    end
...

我的邀请函/new.html.erb

<%= @users.each do |user| %>
 <%= image_tag avatar_url(user) %>
 <%= user.fullname %>
<% end %>

错误:

ActionView::Template::Error (undefined method `each' for nil:NilClass):

1 个答案:

答案 0 :(得分:2)

有很多方法可以解决您的问题。请查看我的观点,然后选择您认为合适的任何一种观点。

方法。 1(最简单)

请只使用此代码,它将对您很简单:)

<%= User.all.each do |user| %>
 <%= image_tag avatar_url(user) %>
 <%= user.fullname %>
<% end %>

方法。 2(确定,但不是最好)

您的InvitationsController

class InvitationsController < Devise::InvitationsController
 def new   
   @users = User.all
   super
 end
end

您的邀请函/new.html.erb

<%= @users.each do |user| %>
 <%= image_tag avatar_url(user) %>
 <%= user.fullname %>
<% end %>

方法。 3(最佳)

您的InvitationsController

class InvitationsController < Devise::InvitationsController
  def new
    self.resource = resource_class.new
    @users = User.all
    render :new
  end
end

您的邀请函/new.html.erb

<%= @users.each do |user| %>
 <%= image_tag avatar_url(user) %>
 <%= user.fullname %>
<% end %>

覆盖方法的设计路线。 2和方法。 3

请确保在路由中覆盖默认的邀请控制器:)

# config/routes.rb
devise_for :users, controllers: {
  invitations: "invitations"
}