按照设计,某些类只处理可用语言的子集。
globalize-accessors
gem非常有用,但渲染需要定义以下内容
Class.globalize_attribute_names
所以在available_locales = [:en, :ru, :fr, :de]
期间,目标是使用较小的数组[:en, :ru]
documentation个州Calling globalize_accessors with no options will therefore generate accessor methods for all translated fields and available languages
。但是所谓的调用方式是在模型中
globalize_accessors :locales => [:en, :fr], :attributes => [:title]
globalize_accessors
方法如何引用数组,这是由
@post.owner.ownerlocales.pluck('locale')
(虽然引用了数组值......)
答案 0 :(得分:0)
找到了一个工作解决方案,但没有解决上述问题,是基于全球化访问者的事实
允许您访问方法:title_pl,title_en,title_pl =,title_en =
因此,生成白名单的控制器方法
@locales = []
@post.owner.ownerlocales.each do |ol|
locale = ol.locale
@locales.push(locale)
end
...然后在视图中处理过滤掉白名单中的globalize_processors
<% Post.globalize_attribute_names.each do |lang| %>
<% my_string = lang.to_s %>
<% @locales.each do |locale| %>
<% checkstring = "_" + locale %>
<% if my_string.include? checkstring %>
<div class="row">
<%= t(lang[0..-4]) %> - <%= lang[-2, 2] %> <br />
<%= f.text_area lang, rows: "3" %>
</div>
<% end %>
<% end %>
<% end %>
效率不高,功能齐全。