Ruby on rails 在rails中使用简单表单时,是否可以更改标签显示名称?

Ruby on rails 在rails中使用简单表单时,是否可以更改标签显示名称?,ruby-on-rails,simple-form,Ruby On Rails,Simple Form,我正在rails中使用simple form,我想知道是否有办法更改集合对象的显示方式。例如,我有这样的东西 <%= f.input :lang, :label => "Language", :collection => [ "en", "es, "zh", "fr" ] %> “语言”,:集合=>[“en”、“es”、“zh”、“fr”]%> 与其显示为“en es zh”等,我希望它显示为“English-西班牙语”等,以供用户使用。是否有其他方法可以这样做 提前

我正在rails中使用simple form,我想知道是否有办法更改集合对象的显示方式。例如,我有这样的东西

<%= f.input :lang, :label => "Language", :collection => [ "en", "es, "zh", "fr" ] %>
“语言”,:集合=>[“en”、“es”、“zh”、“fr”]%>
与其显示为“en es zh”等,我希望它显示为“English-西班牙语”等,以供用户使用。是否有其他方法可以这样做


提前谢谢。

我想标签应该是“English”和值“en”;您可以这样做:

将数据存储在模型中(推荐)或进行散列:

@data = Language.all
在视图中,使用标签法值法

<%= f.input :lang, :label => "Language", :collection => @data, :label_method => :name, :value_method => :value %>
“语言”,:collection=>@data,:label\u method=>:name,:value\u method=>:value%>

选中

中的集合部分,另一个选项是添加助手

def languages_display
  [
    ["English", "en"],
    ["Spanish", "sn"],
    ["French", "fr"],
  ]
end
然后从输入字段调用您的助手:

<%= f.input :state, :collection => languages_display %>

您也可以使用以下方法:

在模型中:

    LANGUAGES = {'English' => 'en','French' => 'fr'}
鉴于:

    <%= f.input :lang, :label => "Language", :collection => Model::LANGUAGES %>
“语言”,:集合=>模型::语言%>

我的方法是将整个集合放在语言环境yml文件(en.yml)中:

鉴于此,请写下:

<%= f.input :lang, :label => "Language", :collection => t("collections.languages") %>
“语言”,:collection=>t(“collections.languages”)%%>
我经常使用它,所以我甚至用helper函数编写了gem,它扩展了I18n(),并且用它在gemfile中编写(注意“tc”helper)

“语言”,:集合=>tc(:语言)%>

这在上面是有效的,使用嵌套数组。此外,这在最新的rails和simple表单中也使用过

#RAILSROOT/locales/en.yml
en:
  collections:
    languages: 
      - - en
        - English
      - - de
        - Deutch
<%= f.input :lang, :label => "Language", :collection => t("collections.languages") %>
<%= f.input :lang, :label => "Language", :collection => tc(:languages) %>
 <%= f.input :lang, label: "Language", collection: [ [ "English", "en" ], [ "Spanish", "es" ], [ "French", "fr" ] ] %>