NoMethodError для nil: NilClass на Rails - PullRequest
       1

NoMethodError для nil: NilClass на Rails

0 голосов
/ 03 февраля 2019

У меня есть модель с именем Категории , которую я хочу показать.Поэтому я ввел следующий оператор в pages / home.html.erb

<%= render 'categories/index.html.erb' %>

Теперь, когда я запускаю сервер, я получаю NoMethodError для строки:

<% @categories.each do |category| %>

Это полный index.html.erb файл представления категорий:

<p id="notice"><%= notice %></p>

<h1>Categories</h1>

<table>
  <thead>
    <tr>
      <th>Title</th>
      <th>Price</th>
      <th colspan="3"></th>
    </tr>
  </thead>

  <tbody>
    <% @categories.each do |category| %>
      <tr>
        <td><%= category.title %></td>
        <td><%= category.price %></td>
        <td><%= link_to 'Show', category %></td>
        <td><%= link_to 'Edit', edit_category_path(category) %></td>
        <td><%= link_to 'Destroy', category, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>

<br>

<%= link_to 'New Category', new_category_path %>
 <p id="notice"><%= notice %></p>

<h1>Categories</h1>

<table>
  <thead>
    <tr>
      <th>Title</th>
      <th>Price</th>
      <th colspan="3"></th>
    </tr>
  </thead>

  <tbody>
    <% @categories.each do |category| %>
      <tr>
        <td><%= category.title %></td>
        <td><%= category.price %></td>
        <td><%= link_to 'Show', category %></td>
        <td><%= link_to 'Edit', edit_category_path(category) %></td>
        <td><%= link_to 'Destroy', category, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>

<br>

<%= link_to 'New Category', new_category_path %>
<p id="notice"><%= notice %></p>

<h1>Categories</h1>

<table>
  <thead>
    <tr>
      <th>Title</th>
      <th>Price</th>
      <th colspan="3"></th>
    </tr>
  </thead>

  <tbody>
    <% @categories.each do |category| %>
      <tr>
        <td><%= category.title %></td>
        <td><%= category.price %></td>
        <td><%= link_to 'Show', category %></td>
        <td><%= link_to 'Edit', edit_category_path(category) %></td>
        <td><%= link_to 'Destroy', category, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>

<br>

<%= link_to 'New Category', new_category_path %>

Может кто-нибудь помочь мне понять, почему это не работает

1 Ответ

0 голосов
/ 03 февраля 2019

Если вы также хотите отобразить частичку categories/index.html.erb на своей домашней странице, то вы должны инициализировать все переменные, которые используются в этой частичке.

Поскольку вы используете @categories в этой части, вам потребуетсядобавьте следующее к вашему действию контроллера.Я предполагаю, что у вас уже есть PagesController с home методом.

# in app/controllers/pages_controller.rb
def home
  @categories = Category.all  # <= Add this line
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...