【发布时间】:2019-09-26 08:00:45
【问题描述】:
使用 globalize gem 来管理带有自动完成功能的翻译,存在需要正确设置许多挂钩的情况。注意:这不使用 hstore AFAIK。我还没有设法找到这样做的方法。迄今为止最高效的设置 控制器:
autocomplete :nation, :name, :full => true
国家
translates :name
查看
<%= autocomplete_field_tag 'nation_name', '', autocomplete_nation_name_itins_path, size: 35, :id_element => 'nation_id' %>
目前还没有对Globalize 创建的nation_translations 数据库表的固有引用。正如这张图片所暗示的,有一个问题:
问题 1:输入仍然绑定到基表的属性值(我还没有按照 Globalize gem 的建议清除它们。否则我会得到空白)。 can 实际上已准备好主表中 can 的所有值...在其他语言环境中键入,如西里尔文说 Канада 自然没有效果,因为该值不是 Nation 表的一部分。
有趣的是,Rails 会自动填充下拉值,提取输入内容的翻译值。
问题 2:我宁愿传递参数“nation_id”,它自然是带有表单数据的nation_translations 表的一部分。虽然我可以将, :extra_data => [:nation_id] 附加到控制器,但它没有被提交(以西里尔文为例,其中输入没有任何自动完成)
{"utf8"=>"✓", "nation_name"=>"Канада", "commit"=>"..."}
Rails.logger.info :extra_data 返回:
extra_data
现在可以克服第二个问题,因为像这样的查询
Nation::Translation.where('name = ?', "Канада").pluck('nation_id')
返回正确的结果。但是,如果自动完成功能没有与用户输入打交道,那么这一点就没有实际意义了。
如何将其配置为使用当前本地翻译自动完成用户输入?
【问题讨论】:
标签: ruby-on-rails autocomplete rails-i18n globalize