我正在尝试创建一条使用Vendor链接到每个Spree Commerce的商店页面的路线。该页面应列出详细信息(名称,关于我们的信息等)以及给定供应商的产品。
https://example.com/stores/vendor-one
我的 routes.rb 配置:
Spree::Core::Engine.routes.draw do
resources :stores
end
我的 stores_controller 控制器:
module Spree
class StoresController < Spree::StoreController
require 'vendor'
def show
@vendor = current_spree_vendor
end
end
end
我的 show.html.erb 模板:
<h2><%= @vendor.name %></h2>
<p><%= @vendor.about_us %></p>
我得到的错误:
Spree :: Stores#single中的NoMethodError
在第2行出现的位置显示/myapp/app/views/spree/stores/show.html.erb:
nil:NilClass的未定义方法“名称”
第2行:
<h2><%= @vendor.name %></h2>
如何通过从URL获取名称来加载给定的Vendor?我是Rails的新手,所以我们将不胜感激!
答案 0 :(得分:0)
调试此类错误的方法是从错误中倒退。模板中发生错误,因为@vendor
是nil
。为什么?控制器具有#show方法,该方法设置@vendor
,但它将@vendor设置为current_spree_vendor
的结果,因此必须是current_spree_vendor
返回了nil
。因此,现在您需要检查current_spree_vendor
并找出为什么有时返回nil的原因。
您很快将学习如何调试此类错误,并且由于这些错误太常见,太具体而无法成为Internet可以帮助您的东西,因此您将需要进行调试。即使互联网可以提供帮助,它也太慢了,等待答案可以阻止您完成工作。