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 回答