上下文:对于一个用于自行车租赁的Ruby on Rails应用程序,我正在使用gem globalize处理:description
不同语言的输入。
当前状态:全球化实现有效,取决于我能够以description
特定语言存储的语言环境。的输入:description
是根据整个网页的语言环境来处理的。
这意味着此页面上的所有内容都必须更改语言才能以:description
正确的语言存储。
另外,我也可以显示所有可用的语言环境并description
为每个语言环境显示。(另请参见下面的注释代码)。
问题:我正在寻找一种方法,让用户只选择一种语言:description
,然后:description
以正确的语言保存而不更改整个网页的语言。
码
形成
<div class="row">
<%# I18n.available_locales.each do |locale| %>
<!-- <h1><%#= locale %></h1> -->
<%= f.globalize_fields_for locale do |ff| %>
<div class="col-10">
<div class="form-group">
<label class="form-control-label text required" for="accommodation_category_description">Description</label>
<div><%= ff.text_area :description, :rows =>"5", :cols =>"30", class:"form-control is-valid text required" %></div>
</div>
</div>
<% end %>
<%# end %>
</div>
</div>
初始值设定项/globalization.rb
module ActionView
module Helpers
class FormBuilder
#
# Helper that renders translations fields
# on a per-locale basis, so you can use them separately
# in the same form and still saving them all at once
# in the same request.
def globalize_fields_for(locale, *args, &proc)
raise ArgumentError, "Missing block" unless block_given?
@index = @index ? @index + 1 : 1
object_name = "#{@object_name}[translations_attributes][#{@index}]"
object = @object.translations.find_by_locale locale.to_s
@template.concat @template.hidden_field_tag("#{object_name}[id]", object ? object.id : "")
@template.concat @template.hidden_field_tag("#{object_name}[locale]", locale)
@template.fields_for(object_name, object, *args, &proc)
end
end
end
end