从deface访问rails url helper

时间:2013-08-17 22:58:02

标签: ruby-on-rails spree deface

我将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>

我知道代码在Spree范围内由Deface执行,因此我的网站的url助手是未定义的。我可以使用完整的方法名称来解决这个问题,例如Rails.application.routes.url_helpers.home_path

但是,我真的不想为我的所有链接添加此内容。难道没有办法告诉Spree包含我网站的网址助手吗?请帮忙!

1 个答案:

答案 0 :(得分:5)

您可以在名为main_app的Rails::Engine中使用较短的版本。

<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之间发生冲突(例如您的app home与Spree的主页)。