Rails: devise_invitable не принимает переменные - PullRequest
0 голосов
/ 22 мая 2019

Я сейчас пытаюсь показать всех пользователей, которые были приглашены текущим пользователем, но это не работает, поскольку @users всегда nil.

Я пытаюсь это на http://localhost:3000/inivtation/new

Мои приглашенияКонтроллер

...
    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 Ответ

2 голосов
/ 23 мая 2019

Существует множество способов исправить вашу проблему. Пожалуйста, посмотрите на мои взгляды и выберите любой из них, который вам нравится.

Метод. 1 (самый простой)

Пожалуйста, просто используйте этот код, и он будет работать для вас просто:)

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

Метод. 2 (хорошо, но не лучше)

Ваши приглашения Контроллер

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 (лучший)

Ваши приглашенияКонтроллер

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"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...