Ruby on rails 在rails中使用简单表单时,是否可以更改标签显示名称?
我正在rails中使用simple form,我想知道是否有办法更改集合对象的显示方式。例如,我有这样的东西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-西班牙语”等,以供用户使用。是否有其他方法可以这样做 提前
<%= 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" ] ] %>