【问题标题】:Spree deface email text template大肆破坏电子邮件文本模板
【发布时间】:2013-10-02 19:33:54
【问题描述】:

我正在尝试在结帐电子邮件后插入文本。我在 spree/order_mailer/confirm_email.text.erb 中找到了模板

<%= Spree.t('order_mailer.confirm_email.dear_customer') %>

<%= Spree.t('order_mailer.confirm_email.instructions') %>

============================================================
<%= Spree.t('order_mailer.confirm_email.order_summary') %>
============================================================
<% @order.line_items.each do |item| %>
<%= item.variant.sku %> <%= raw(item.variant.product.name) %> <%= raw(item.variant.options_text) -%> (<%=item.quantity%>) @ <%= item.single_money %> = <%= item.display_amount %>
<% end %>
============================================================
<%= Spree.t('order_mailer.confirm_email.subtotal', :subtotal => @order.display_item_total) %>

<% @order.adjustments.eligible.each do |adjustment| %>
  <%= raw(adjustment.label) %> <%= adjustment.display_amount %>
<% end %>

<%= Spree.t('order_mailer.confirm_email.total', :total => @order.display_total) %>

<%= Spree.t('order_mailer.confirm_email.thanks') %>

所以我不知道如何在这之后添加一些文本,没有任何选择器:

Deface::Override.new(
    :virtual_path => "spree/order_mailer/confirm_email",
    :insert_bottom => '*',
    :partial      => "spree/shared/confirm_email",    
    :name         => "confirm_email",
    :original     => '3a8c298b4d9884a4d9f842b23fcb4fabf92ef0f3'
)

你能告诉我解决这个问题的任何方法吗?

【问题讨论】:

    标签: ruby-on-rails spree deface


    【解决方案1】:

    在此处找到解决方案:How to add Spree email attachment (image) from products.images?。我创建了一个新模板 /app/views/spree/order_mailer/confirm_email.text.erb 并在此处添加了我的代码。

    【讨论】:

      【解决方案2】:

      简短回答:你不能。

      长答案:不幸的是,您无法像我最近尝试的那样破坏文本文件。原因是Deface 需要结构化数据来解析视图,详见Spree Group discussion。 只有 .deface、.html.erb.deface、.html.haml.deface 或 .html.slim.deface 是唯一允许的覆盖文件:

      Deface::DSL does not know how to read '/spree/app/overrides/spree/order_mailer/confirm_email.text/append_text.text.erb.deface'. 
      Override files should end with just .deface, .html.erb.deface, .html.haml.deface or .html.slim.deface
      

      有趣的是 deface 实际上能够测试文件上的选择器但仍然无法覆盖:

      $ bundle exec rake deface:test_selector['spree/order_mailer/confirm_email.text',"erb:contains('order_mailer.confirm_email.thanks')"]
      
      Querying 'spree/order_mailer/confirm_email.text' for 'erb:contains('order_mailer.confirm_email.thanks')'
      ---------------- Match 1 ----------------
      <%= Spree.t('order_mailer.confirm_email.thanks') %>
      

      你唯一能做的就是通过创建app/views/spree/order_mailer/confirm_email.text.erb来覆盖文件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-06
        • 1970-01-01
        • 1970-01-01
        • 2021-10-20
        • 1970-01-01
        • 1970-01-01
        • 2020-05-08
        • 2020-01-30
        相关资源
        最近更新 更多