2

再会。
我想将参数“btn btn-primary”添加到 Spree 应用程序中的按钮。
我也尝试使用 Deface 来实现这个目标。
但是下面的代码不起作用。

应用程序/overirdes/add_class_btn.rb

Deface::Override.new(:virtual_path => %q{spree/products/_cart_form},
                     :name => %{add_class_thumbnails_to_products},
                     :set_attributes => %q{button#add-to-cart-button},
                     :disabled => false,
                     :attributes => {:class => 'btn btn-primary'})

大礼包部分位于那里https://github.com/spree/spree/blob/master/core/app/views/spree/products/_cart_form.html.erb

结果应该在下面的图片上:
localhost:3000/products/product1

按钮 div

4

2 回答 2

3

通常,当覆盖对我不起作用时,是因为我引用了错误版本的 Spree。例如,我的项目使用 spree 1.0,但我在 github 上引用了 1.1,所以我正在寻找的data-hook名称或我正在寻找的文件不存在。

所以现在,我没有在 github 上查看,而是直接查看我的项目正在使用的 Spree gem。为此,请使用bundle show spree. 您可以像这样进入该目录:

cd my_spree_project     # make sure you're in your spree project
cd `bundle show spree`

另一个非常有用的工具是rake deface:get_result.

deface:get_result - 将列出部分或模板的原始内容、已为该文件定义的覆盖以及生成的标记。get_result 接受一个参数,它是模板/部分的虚拟路径:

运行它以验证您的覆盖实际上是否引用了某些东西。

rake deface:get_result['spree/products/_cart_form']
于 2012-07-05T00:42:20.237 回答
1
Deface::Override.new(:virtual_path => "spree/products/_cart_form",
:name => 'replace_add_to_cart_button',
:replace => "code[erb-loud]:contains('add-to-cart-button')",
:text => "<%= button_tag :class => 'large primary btn btn-primary', :id => 'add-to-cart-button', :type => :submit do %>",
:original => "<%= button_tag :class => 'large primary', :id => 'add-to-cart-button', :type => :submit do %>")

这会将“btn btn-primary”标签应用于按钮。我不知道为什么我的第一个例子不想工作。但目标是得到。

于 2012-07-05T07:39:47.163 回答