如何从主rails应用程序访问Spree的link_to_cart函数

 youyiyang 发布于 2022-12-28 13:26

我正在为一个现有的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似乎不再需要显示购物车按钮和目前的订单..

1 个回答
  • 好的,谢谢本让我走上正轨.这是我的解决方案:

    # 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似乎不再需要显示购物车按钮和目前的订单..

    2022-12-28 13:29 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有