0

我不想使用默认值

<%= f.submit %>

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

我这样称呼它:

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

但现在这个文本出现在按钮上:

%{模型} 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
4

1 回答 1

0

正如I18n 指南所说,该translate函数%{}使用其第二个参数(哈希)插入括号中传递的变量。

在您的情况下,您需要通过以下方式告诉它model

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

如果你想要一个适用于任何模型的通用选项,你可以通过查看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
于 2013-01-12T19:57:50.507 回答