2

良い一日。
Spreeアプリのボタンにパラメーター「btnbtn-primary」を追加したい。
また、この目標にはDefaceを使用しようとしています。
しかし、以下のコードは機能しません。

app / 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'})

そこに部分的に配置されたSpreehttps://github.com/spree/spree/blob/master/core/app/views/spree/products/_cart_form.html.erb

結果は次の図になります:
localhost:3000 / products / product1

btnボタン div

4

2 に答える 2

3

通常、オーバーライドが機能しなかったのは、間違ったバージョンのSpreeを参照していたためです。たとえば、私のプロジェクトはspree 1.0を使用していましたが、githubで1.1を参照していたため、探していたdata-hook名前や探していたファイルが存在しませんでした。

だから今、githubをチェックする代わりに、プロジェクトが使用しているSpreegemを直接調べます。これを行うには、を使用しますbundle show spree。次のようにそのディレクトリに移動できます。

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

もう1つの非常に役立つツールは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 %>")

これにより、「btnbtn-primary」タグがボタンに適用されます。私の最初の例がなぜ仕事を望まないのか分かりません。しかし、目標は取得することです。

于 2012-07-05T07:39:47.163 に答える