Bối cảnh: Đối với ứng dụng Ruby on Rails cho thuê xe đạp, tôi đang sử dụng đá quý toàn cầu hóa để xử lý đầu vào :description
bằng các ngôn ngữ khác nhau.
Trạng thái tò mò: Việc triển khai toàn cầu hóa hoạt động, tùy thuộc vào địa phương của tôi, tôi có thể lưu trữ description
bằng một ngôn ngữ cụ thể. Đầu vào cho :description
được xử lý trên cơ sở ngôn ngữ của toàn bộ trang web.
Điều này có nghĩa là mọi thứ trên trang này phải thay đổi ngôn ngữ để lưu trữ :description
đúng ngôn ngữ.
Ngoài ra, tôi cũng có thể hiển thị tất cả các địa điểm có sẵn và hiển thị description
cho từng địa điểm đó. (Xem thêm mã nhận xét bên dưới).
Câu hỏi: Tôi đang tìm cách để người dùng chỉ chọn một ngôn ngữ :description
và sau đó lưu :description
bằng ngôn ngữ chính xác mà không thay đổi ngôn ngữ của toàn bộ trang web.
Mã
hình thức
<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>
người khởi tạo / toàn cầu hóa.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