1

Spree を既存のサイトに含めています。Deface を使用して spree ヘッダーを変更し、代わりにサイトのヘッダーをレンダリングしています。したがって、次の Deface DSL コードを使用します

<!-- replace_contents "header[data-hook]" -->
<%= render :partial => "layouts/my_site_header.html.erb" %>

そして、_my_site_header.html.erb私はこのようなものを持っています

<ul>
    <li><%= link_to "Home", home_path %></li>
    <li><%= link_to "Game", game_path %></li>
    <li><%= link_to "Community", community_path %></li>
</ul>

次のエラーが表示されます

undefined local variable or method `home_path' for #<#<Class:0x8a73c20>:0x8af0e58>

コードが Deface によって Spree スコープで実行されることを理解したので、私のサイトの URL ヘルパーは未定義です。次のような完全なメソッド名を使用してこれを解決できますRails.application.routes.url_helpers.home_path

ただし、すべてのリンクにこれを追加する気はありません。Spree に自分のサイトの URL ヘルパーを含めるように指示する方法はありませんか? 助けてください!

4

1 に答える 1

5

Rails::Engineから使用できるmain_appという短いバージョンがあります。

<ul>
    <li><%= link_to "Home", main_app.home_path %></li>
    <li><%= link_to "Game", main_app.game_path %></li>
    <li><%= link_to "Community", main_app.community_path %></li>
</ul>

これを使用して、アプリケーションと Spree の間の競合 (アプリのホームと Spree のホームなど) を回避することを強くお勧めします。

于 2013-08-18T05:29:12.467 に答える