undefined метод `each 'для nil: NilClass, но я использовал переменную экземпляра - PullRequest
0 голосов
/ 20 января 2019

Я новичок в ruby ​​и rails, и я понимаю, что это основной вопрос, но я искал везде и пробовал другие предложения по этой ошибке.

Я получаю эту ошибку

неопределенный метод `each 'для nil: NilClass

Однако я использовал @ в контроллере, чтобы сделать массив переменной экземпляра

Контроллер

  def a_list
    #Gibbon::Request.lists("9225cefb61").retrieve
  list = Gibbon::Request.lists("9225cefb61").members.retrieve(params: {"fields": "members.email_address"})
  list_hash = list.body
  a= list_hash["members"]
  @result_array= a.map { |email_array| email_array['email_address'] }
  end

view 
<%= "list emalis"%>
<br/>
<% a_list%>
<% @result_array.each do |item| %>
  <%= item %>
<% end %>

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Как объяснил @Justin P., вы должны использовать фильтры, так как это лучший способ.

Другое (более быстрое) решение - переместить код a_list в соответствующее действие, которое вы вызываете из представления. Таким образом вы получите правильный @result_array, к которому вы пытаетесь получить доступ в своем представлении.

Приветствие.

0 голосов
/ 20 января 2019

Ошибка заключается в том, что когда контроллер выполняет другое действие, переменные экземпляра, подобные этим, не обязательно переносятся / получают набор, а любая неопределенная переменная экземпляра по умолчанию принимает значение nil. Предполагая, что это представление списка на ResultsController#show, один вариант будет для ResultsController выглядеть примерно так:

before_action :a_list, only: :show

def show
  # Any other code for show
end

def a_list
  list = Gibbon::Request.lists("9225cefb61").members.retrieve(params: {"fields": "members.email_address"})
  list_hash = list.body
  @result_array =  list_hash['members'].map { |ea| ea['email_address'] }
end

При этом используются встроенные Rails Filters для обработки цепочки сообщений при отображении вашего представления. Поскольку #a_list запускается до #show, значение @result_array сводит его к виду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...