我不想使用默认
<%= 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
答案 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