【问题标题】:interface language selector in rails form?rails形式的界面语言选择器?
【发布时间】:2012-06-02 14:02:40
【问题描述】:

在表单中继续选择区域设置的方法是什么?

我有一个包含“lng”列的用户模型,其中存储了“en”、“fr”等 i18n 语言环境字符串。

我的目标是在下拉列表中列出所有语言“英语”、“法语”,并在表单更新时将正确的“en”、“fr”值存储在用户表中。

有什么方法可以解决这个问题?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 forms internationalization locale


    【解决方案1】:

    您可以简单地使用选择标签http://guides.rubyonrails.org/form_helpers.html#the-select-and-option-tags

    = form_for @user do |f|
      = f.select :lng, options_for_select([['English', 'en'], ['French', 'fr']], @user.lng)
    

    我还建议将数组移动到常量的某个位置。例如,在它自己的模型 User 方法中。例如:

    #models/user.rb
    def self.lng_list
      [['English', 'en'], ['French', 'fr']]
    end
    
    #form
    = form_for @user do |f|
      = f.select :lng, options_for_select(User.lng_list, @user.lng)
    

    已编辑

    在简单的形式中,您可以使用像这样https://github.com/plataformatec/simple_form#wrapping-rails-form-helpers 的rails 表单助手:

     = f.input :lng do
       = f.select :lng, options_for_select(User.lng_list, @user.lng)
    

    或者你可以使用collection选项https://github.com/plataformatec/simple_form#collections

    = f.input :lng, :collection => User.lng_list
    

    【讨论】:

    • thx 这在基础上很有效,但由于我使用的是 simple_form,它不能正确显示标签。如果我这样做 :label => "country" 它没有显示并且 = f.label "country" 确实打印标签但不使用正确的 css。答案很好,但也许你也知道如何以简单的形式做到这一点?非常感谢
    猜你喜欢
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2019-02-15
    相关资源
    最近更新 更多