gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:59:13 25 4
gpt4 key购买 nike

我正在将一个 spree 商店构建到一个现有的 Rails 应用程序中,我需要访问 link_to_cart从施普雷引擎外部。
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 = "<i class='fa fa-shopping-cart'></i> #{text}: (#{simple_current_order.item_count}) <span class='amount'>#{simple_current_order.display_total.to_html}</span>".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'
我在 different StackOverflow question 上找到了这个,而且看起来很有希望,但我不确定如何根据我的需要修改它:
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

最佳答案

好的,感谢 Ben 让我走上正轨。这是我的解决方案:

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

关于ruby-on-rails - 如何从主 Rails 应用程序访问 Spree 的 link_to_cart 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25296965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com