Ошибка Ruby on Rails: неопределенный метод для nil: NilClass - PullRequest
0 голосов
/ 19 января 2019

Я делаю свой первый проект ruby ​​on rail и у меня ошибка "неопределенный метод` title 'для nil: NilClass ".

Вот коды

============ index.html.erb ========

        <table>
         <% @products.select {|p| p.price.to_i > 200 }.each do |product|%>
         <tr>
            <td><%= product.title %></td>
            <td><%= product.price %></td>

         </tr>
         <% end %>
       </table>

============= products_controller.rb =========

      class ProductsController < ApplicationController
      def index
          @products = Product.all
       end

       def show
          if params[:id] == "ALL"
             @products = Product.all
          else
             @product = Product.find(params[:id])
          end

               Prefix Verb   URI Pattern                                                                              Controller#Action
        welcome_index GET    /welcome/index(.:format)                                                                 welcome#index
             products GET    /products(.:format)                                                                      products#index
                      POST   /products(.:format)                                                                      products#create
          new_product GET    /products/new(.:format)                                                                  products#new
         edit_product GET    /products/:id/edit(.:format)                                                             products#edit
              product GET    /products/:id(.:format)                                                                  products#show
                      PATCH  /products/:id(.:format)                                                                  products#update
                      PUT    /products/:id(.:format)                                                                  products#update
                      DELETE /products/:id(.:format)                                                                  products#destroy
                 root GET    /                                                                                        welcome#index

=============

Все, что я хочу сделать, это отобразить весь продукт, если параметр «ВСЕ», отобразить некоторые продукты (цена <50), если параметр «ONSALE», и отдельный продукт, если параметр является идентификатором продукта. Любое предложение приветствуется! </p>

1 Ответ

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

если я прочитаю ваш исходный код, то вам просто нужно перечислить продукт с ценой выше 200, который вы можете сделать с , где , позже, возможно, если вы захотите дополнительно отфильтровать данные, вы можете узнать Ransack Gem

это для вашего index.html.erb

<table>
  <% @products.each do |product| %>
    <tr>
      <td><%= product.title %></td>
      <td><%= product.price %></td>
    </tr>
  <% end %>
</table>

это ваш Контроллер продуктов

class ProductsController < ApplicationController
  def index
    # if you want directly to filter just the list product that has price above 200 
    # then you can use where, your view just to show the result of @products

    @products = Product.where('price > ?',200)
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...