我在rails中使用simple-form,我想知道是否有一种方法可以改变集合对象的显示方式。例如,我有这样的东西
<%= f.input :lang, :label => "Language", :collection => [ "en", "es, "zh", "fr" ] %>而不是显示为"en es zh“等,我希望它显示为”英语西班牙语“等用户。有什么办法可以做这样的事情吗?
提前谢谢。
发布于 2012-12-03 02:28:05
您也可以使用以下方式:
在模型中:
LANGUAGES = {'English' => 'en','French' => 'fr'}在视图中:
<%= f.input :lang, :label => "Language", :collection => Model::LANGUAGES %>发布于 2012-12-02 13:07:15
我猜标签是"English“,值是"en";您可以这样做:
将数据存储在模型中(推荐)或生成散列:
@data = Language.all在视图中,使用label_method和value_method
<%= f.input :lang, :label => "Language", :collection => @data, :label_method => :name, :value_method => :value %>发布于 2012-12-03 00:09:34
另一种选择是添加帮助器
def languages_display
[
["English", "en"],
["Spanish", "sn"],
["French", "fr"],
]
end然后从输入字段调用您的助手:
<%= f.input :state, :collection => languages_display %>然后在你的show视图中,你可以调用下面的helper,这样它就会显示英语,而不是你在数据库中的en:
def show_language(language)
{
"en" => 'English',
"sp" => 'Spanish',
"fr" => 'French'
}[language]
endhttps://stackoverflow.com/questions/13665997
复制相似问题