我正在为一个现有的Rails应用程序构建一个狂欢商店,我需要link_to_cart
从Spree引擎外部访问.
link_to_cart
可以在这里找到: spree/core/app/helpers/spree/base_helper.rb
由于我修改了样式link_to_cart
,我还创建了:
#helpers/spree/base_helper_decorator.rb
module Spree
module BaseHelper
def link_to_cart(text = nil)
text = text ? h(text) : Spree.t('cart')
css_class = nil
if simple_current_order.nil? or simple_current_order.item_count.zero?
text = "#{text}: (#{Spree.t('empty')})"
css_class = 'empty'
else
text = " #{text}: (#{simple_current_order.item_count}) #{simple_current_order.display_total.to_html}".html_safe
css_class = 'full'
end
link_to text.html_safe, spree.cart_path, :class => "cart-info #{css_class} btn btn-small btn-success pull-right", style: "margin-left:10px;"
end
end
end
我试过在引擎外做Spree :: BaseHelper.link_to_cart之类的东西,但我一直在努力 undefined local variable or method 'link_to_cart'
我在一个不同的StackOverflow问题上发现了这个问题,看起来很有希望,但我不确定如何根据我的需要修改它:
module MyEngine class Engine < Rails::Engine initializer 'my_engine.action_controller' do |app| ActiveSupport.on_load :action_controller do helper MyEngine::ImportantHelper end end end end
Abram.. 6
好的,谢谢本让我走上正轨.这是我的解决方案:
# class ApplicationController < ActionController::Base include Spree::Core::ControllerHelpers::Order include Spree::Core::ControllerHelpers::Auth helper Spree::BaseHelper helper Spree::StoreHelper
更新
我遇到current_store
了在引擎外部未定义的问题.我不确定如何正确解决这个问题,但在此期间我刚刚添加以下内容以阻止spree调用current_store:
module Spree module Core module ControllerHelpers module Order def current_order_params { currency: current_currency, guest_token: cookies.signed[:guest_token], store_id: Spree::Store.first, user_id: try_spree_current_user.try(:id) } end end end end end
也helper Spree::StoreHelper
似乎不再需要显示购物车按钮和目前的订单..
好的,谢谢本让我走上正轨.这是我的解决方案:
# class ApplicationController < ActionController::Base include Spree::Core::ControllerHelpers::Order include Spree::Core::ControllerHelpers::Auth helper Spree::BaseHelper helper Spree::StoreHelper
更新
我遇到current_store
了在引擎外部未定义的问题.我不确定如何正确解决这个问题,但在此期间我刚刚添加以下内容以阻止spree调用current_store:
module Spree module Core module ControllerHelpers module Order def current_order_params { currency: current_currency, guest_token: cookies.signed[:guest_token], store_id: Spree::Store.first, user_id: try_spree_current_user.try(:id) } end end end end end
也helper Spree::StoreHelper
似乎不再需要显示购物车按钮和目前的订单..