使用翻译提交按钮

时间:2013-01-12 16:46:20

标签: ruby-on-rails-3 i18n-gem

我不想使用默认

<%= f.submit %>

并为其创建了一个辅助函数,它还嵌入了一个图标。辅助函数需要将标签放在新创建的按钮上。

我这样称呼它:

<%= submit_button("icon-plus", I18n.translate("helpers.submit.create")) %>

但是现在这个文字出现在按钮上:

%{model} toevoegen

而不是:

产品类型toevoegen

如果我使用正常的提交按钮,则会出现正确的文本,因此我的yml文件是正确的。如何在帮助程序中获取正确的文本?

帮助程序代码:

def submit_button(icon, label)
  link_to "javascript:void(0)", :class => 'btn btn-primary', :onclick => "$(this).closest('form').submit()" do
  raw('<div class="') + icon + raw(' icon-white"> ') + label +raw('</div>')
  end
end

1 个答案:

答案 0 :(得分:0)

正如I18n guide所说,translate函数使用第二个参数(散列)插入%{}括号中传递的变量。

在您的情况下,您需要通过执行以下操作告诉model

I18n.t("helpers.submit.create", model: "Product type")

如果你想要一个适用于任何模型的通用选项,你可以通过查看源on GitHub来看看Rails本身是如何做到的 - 它就像

I18n.t("helpers.submit.create", model: f.object.class.model_name.human)

顺便说一句,你不需要(也可能不应该)使用raw。您可以使用内置帮助程序轻松完成您要实现的目标:

link_to ... do
  content_tag :div, label, class: "#{icon} icon-white"
end