美好的一天 我想在Spree app的按钮中添加参数'btn btn-primary' 我也尝试使用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'})
Spree部分位于https://github.com/spree/spree/blob/master/core/app/views/spree/products/_cart_form.html.erb
结果应该在下面的图片上:
本地主机:3000 /产品/产品1
答案 0 :(得分: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']
答案 1 :(得分: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”标签应用于该按钮。 我不知道为什么我的第一个例子不想要工作。 但目标是获得。