Загрузка объекта поставщика по имени Параметр, извлеченный из URL - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь создать маршрут, который ссылается на страницу магазина каждого Продавца , используя Spree Commerce .На странице должны быть перечислены детали (имя, информация о нас и т. Д.) И продукты данного поставщика.

https://example.com/stores/vendor-one

Моя rout.rb конфигурация:

Spree::Core::Engine.routes.draw do
    resources :stores
end

Мой store_controller Контроллер:

module Spree
    class StoresController < Spree::StoreController  
      require 'vendor'
      def show
        @vendor = current_spree_vendor
      end     
    end
end

Мой show.html.erb template:

<h2><%= @vendor.name %></h2>
<p><%= @vendor.about_us %></p>

Ошибка, которую я получаю:

NoMethodError в Spree :: Stores # single

Отображение / myapp / app /views / spree / stores / show.html.erb, где поднята строка # 2:

неопределенное имя метода для nil: NilClass

Строка № 2: <h2><%= @vendor.name %></h2>

Как я могу загрузить данный Vendor , получив его имя из URL?Я новичок в Rails, поэтому любая помощь будет высоко оценена!

1 Ответ

0 голосов
/ 26 июня 2019

Способ отладки ошибок, как это, работает в обратном направлении от ошибки. Ошибка происходит в шаблоне, потому что @vendor равно nil. Зачем? В контроллере есть метод #show, который устанавливает @vendor, но он устанавливает @vendor для результата current_spree_vendor, поэтому должно быть, что current_spree_vendor вернул nil. Так что теперь вам нужно изучить current_spree_vendor и выяснить, почему он иногда возвращает ноль.

Вскоре вы научитесь отлаживать ошибки такого рода, и вам нужно будет это сделать, потому что ошибки такого рода слишком распространены и слишком специфичны, чтобы быть чем-то, с чем вам может помочь Интернет. Даже когда Интернет может помочь, он слишком медленный, и ожидание ответов на него не даст вам выполнить свою работу.

...