使用Rails I18n轻松将布尔值转换为是/否

时间:2013-05-11 17:13:30

标签: ruby-on-rails internationalization formatting boolean

我有一个简单的问题 - 我需要将俄语中的布尔值(contract_pledge)转换为是/否格式(Да/Нет)。我以为我可以轻松找到答案,因为如果你想在显示页面中显示复选框似乎很自然。 我找到了这两个帖子:

我试图将它们结合起来,但我失败了。现在我只有英语是/否。 多数民众赞成在我的观点/views/lots/show.html.erb

<%= form_for([@lot.tender,@lot]) do |f| %>
<table>
...
<tr>
<td class="right"><b><%= f.label :contract_pledge %></b></td>
<td><%=t @lot.contract_pledge.yesno %></td>
</tr>
...
</table>
<% end %>

这是我创建的文件/config/initializers/boolean_path.rb:

class FalseClass
  def yesno
    "No"
  end
end

class TrueClass
  def yesno
    "Yes"
   end
end

那是我的/config/locales/ru.yml

ru:
    yesno:
      Yes: "Да"
      No: "Нет"

当然我可以解决在Lot视图中插入俄语的问题,但我想以rails方式进行。我将不胜感激任何帮助,我认为这个问题对其他年轻的程序员有用。

1 个答案:

答案 0 :(得分:1)

您返回“是”或“否”,因此您必须翻译这些键:

<td><%= t @lot.contract_pledge.yesno %></td>

您可能会在2.3到2.6节中找到有用的http://guides.rubyonrails.org/i18n.html#setting-and-passing-the-locale