Страница со списком поставщиков Spree Commerce [NoMethodError: неопределенный метод `each' для #<Class:...>]

Я создаю представление, в котором перечислены все поставщики, использующие расширение Spree Multi Vendor для Веселая коммерция.

Мой шаблон index.html.erb:

<% @vendors.each do |vendor| %>
    <h2>
      <%= vendor.name %>
    </h2>
<% end %>

Мой stores_controller.rb контроллер:

module Spree
    class StoresController < Spree::StoreController  
      def index
        @vendors = Spree::Vendor
      end
    end
end

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

NoMethodError in Spree::Stores#index

Showing /myapp/app/views/spree/stores/index.html.erb where line #36 raised:

undefined method `each' for # < Class:0x00007fe3f5570a40 >

Line #36 : <% @vendors.each do |vendor| %>

Как я могу правильно создать экземпляр Vendor Model внутри моего контроллера, чтобы я мог использовать его методы и получать доступ к его атрибутам в представлениях моего магазина?

🤔 А знаете ли вы, что...
Фреймворк обеспечивает поддержку многоязычности и интернационализации (I18n).


215
1

Ответ:

Решено

Spree::Vendor — это просто модельный класс. Вы можете думать об этом как о любой другой модели — User, Product и т. д.

В этом случае вы должны вызвать Spree::Vendor.all или Spree::Vendor.active, чтобы получить записи.