Неопределенный метод 'each' для nil: NilClass, для @topics - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь отобразить контент на странице.У меня есть:

index.html.erb

<if !user_signed_in? %>
  <%= link_to 'Download Topics', resumes_url, :class => 'btn btn-danger' %>
  <%= form_tag topics_path, :method => 'get' do %>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search" %>
  <% end %>

  <% @topics.each do |topic| %>
    <div class="topic">
      <h3><%= topic.title %></h3>
      <p><%= topic.id %></p>
      <p class="text-justify" ><%= topic.body %></p>
      <p><%= topic.date %></p>

      <%= image_tag topic.image.url, class: "topic-show" if topic.image? %>
    </div>

    <% if current_user && current_user.admin? %>
      <%= link_to "Edit", edit_topic_path(topic), :class => 'btn btn-default' %>
      <%= link_to "Destroy", topic, :class => 'btn btn-default', method: :delete, data: {confirm: 'Are you sure?'} %>
    <% end %>
    <%= link_to "Show", topic_path(topic), :class => 'btn btn-default' %>
  <% end %>
<div>
<%= will_paginate @topic, renderer: BootstrapPagination::Rails %>
</end>

themes_controller.rb, индекс действия

class TopicsController < ApplicationController
  before_action :authenticate_user!, except: [:show, :index, :update, :destroy]

  def index
    @topics = Topic.search(params[:search]).paginate(:page => params[:page], :per_page => 5
    @topics = Topic.all
  end
end

И я получил ошибку

undefined method `'each'` for `nil:NilClass`

Ошибка выдается на <% @topics.each do |topic| %>.

Error Shown Here

Я не уверен, что делать.Я попытался добавить:

@topics = Topic.all

к topics#index, но это, похоже, не решает проблему.

1 Ответ

1 голос
/ 15 марта 2019

Эта ошибка означает, что @topics пусто.

Чтобы устранить эту проблему, необходимо обновить страницу во время просмотра консоли.

Проверьте запросы, выполняемые при выполнении этих строк:

@topics = Topic.search(params[:search]).paginate(:page => params[:page], :per_page => 5
@topics = Topic.all

Если вы не можете обнаружить проблему в консоли, скопируйте запрос в графический интерфейс вашей базы данных и запустите запрос, измените его до получения ожидаемых результатов и отредактируйте запрос.

Я бы предположил, что ваша проблема может быть связана с передаваемыми параметрами.

Вы должны добавить это перед вашими запросами, чтобы посмотреть, какие параметры вы получаете.

p 'my params'
p params[:search]
p params[:page]

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

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