我正在尝试从 ERB 创建一个 html 文件,因为我想保存一份非常复杂计算的发票副本。 我的 ERB 模板使用了许多不同的计算并且大量使用number_to_currencyimage_tag

以下是我的操作方法

def save_invoice
    erb_file = 'app/views/orders/invoice.html.erb'
    html_file = File.basename(erb_file, '.erb')
    erb_str = File.read(erb_file)
    renderer = ERB.new(erb_str)
    @order = Order.find(params[:id]).to_i
    result = renderer.result(binding)

      File.open(html_file, 'w') do |f|
        f.write(result)
      end
    end

我的invoice.html.erb

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Invoice</title>
 </head>
<body>
<header>
    <%= image_tag 'logo_new.png', width: '110',height: '100' %>
</header>
<h1>Invoice # <%= @order.id %></h1>
<p>Client : <%= @order.user.first_name %>, <%= @order.user.last_name %></p>
<p>Amount : <%= number_to_currency(@order.totals) %></p>

它正在制作 html 文件,但如果我删除所有 image_tag(查看器助手)和 number_to_currency 函数。 那么我如何在我的 ERB 中使用这些功能。 我明白这是因为我正在创建 ERB 字符串,我真的不理解这段代码,而不是在我删除所有这些函数时工作的参考。 请建议我应该在方法中包含什么。 我在这里放了非常简洁的代码,实际上代码很乱,有数千行。

#1楼 票数:1 已采纳

我刚刚意识到我使用了绑定,那么为什么不将视图助手作为对象调用并在我的视图中使用它的函数。 这样它会自动将助手发送到ERB文件。 我在 save_invoice 方法中的def save_invoice之后添加了以下行

    @views_helper = ActionView::Base.new 

现在在我的 erb 文件中,我用添加这个对象替换了我的image_tag ,如下所示

<%= @views_helper.image_tag 'logo_new.png', width: '110',height: '100' %>

对于我的 number_to_currency 我做了同样的事情


<p>Amount : <%= @views_helper.number_to_currency(@order.totals) %></p>

它解决了我的问题,目前工作正常,我确信我正在制作完整的对象,然后将其转发给查看可能会产生大量请求的后果,但这对我来说工作正常。

至于解释,我创建了对象,绑定将显示我的 ERB 文件中的所有局部变量,因此这个对象也可以访问并完成工作。

  ask by Kamal Panhwar translate from so

未解决问题?本站智能推荐:

2回复

number_to_currency 语言环境转换

为什么number_to_currency(33.50, :locale => :fr)显示 $33.50? 它应该根据区域设置以不同的货币显示。 我希望结果是33,50 € 。 非常感谢!
1回复

Rails-编辑视图-无法保存到MySQL:使用number_to_currency帮助程序进行十进制

我有2个数据库列(使用mysql),一个为小数(10,2),另一个为字符串。 迁移看起来像。 在_form.html.erb部分中,我使用number_to_currency帮助器进行了以下操作。 首先,我在TOTALTAX字符串中有“ 3429.65”,在十进制中有“ 1
2回复

如何阻止“ number_to_currency”方法将逗号解释为价格的小数位?

在我的Ruby on Rails应用程序中,我有一个名为Post的模型,该模型的数据库表中有一个名为“ Price ”的列。 此列是十进制类型,精度为8,小数位数为2。 新帖子的表单具有:price的“ text_field”,在“帖子显示”视图中,我设置了“ Price ”以这种方式显
5回复

Rails number_to_currency删除十进制右边的尾随零

我有一个动态生成的表,乘以价格*数量。 部分价格为部分美分。 例如 如果一个项目的价格是0.0375我可以在我的表中显示为 但是对于价格是标准的2位十进制数的数量,我得到 我需要一种方法来修剪十进制值的尾随零。 请记住,输出在Model.each块中,所以我不确定我是
2回复

number_to_currency rails失败,将String与0比较失败

我正在使用rails 3.2和ruby 1.9.3我正在使用它来显示价格: 在区域设置:en,它可以工作,但是在:es我得到: comparison of String with 0 failed 在任何地方都找不到它吗? 编辑:我已经更新了数字只是为了清楚,数字是合法的,问
1回复

Rails中的多种货币

我希望能够在我的网站上支持多种(现在3种)货币。 我是初学者,对如何做到这一点有疑问。 我搜索了一下,我有一个问题清单。 以下是我的要求。 我不想更改我网站上的标签/文字,而只是根据所选货币更改产品的价格。我找到了2种方法。 使用金钱宝石https://gith
1回复

防止单引号在.Click中的image_tag中转义

我在ERB文件中有这行代码: 这会产生错误的HTML: 我尝试过使用: 但这没有任何区别。 我正在运行Rails 3.2.14。
1回复

number_to_currency删除小数点

有什么方法可以将显示中的值更改为以下值: $ 100.25至10025 需要采用这种格式才能通过支付网关。