首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在rails中使用simple-form时,您可以更改标签显示名称吗?

在rails中使用simple-form时,您可以更改标签显示名称吗?
EN

Stack Overflow用户
提问于 2012-12-02 11:00:43
回答 5查看 14.9K关注 0票数 13

我在rails中使用simple-form,我想知道是否有一种方法可以改变集合对象的显示方式。例如,我有这样的东西

代码语言:javascript
复制
<%= f.input :lang, :label => "Language", :collection => [ "en", "es, "zh", "fr" ] %>

而不是显示为"en es zh“等,我希望它显示为”英语西班牙语“等用户。有什么办法可以做这样的事情吗?

提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-12-03 02:28:05

您也可以使用以下方式:

在模型中:

代码语言:javascript
复制
    LANGUAGES = {'English' => 'en','French' => 'fr'}

在视图中:

代码语言:javascript
复制
    <%= f.input :lang, :label => "Language", :collection => Model::LANGUAGES %>
票数 19
EN

Stack Overflow用户

发布于 2012-12-02 13:07:15

我猜标签是"English“,值是"en";您可以这样做:

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

代码语言:javascript
复制
@data = Language.all

在视图中,使用label_methodvalue_method

代码语言:javascript
复制
<%= f.input :lang, :label => "Language", :collection => @data, :label_method => :name, :value_method => :value %>

查看https://github.com/plataformatec/simple_form中的集合一节

票数 0
EN

Stack Overflow用户

发布于 2012-12-03 00:09:34

另一种选择是添加帮助器

代码语言:javascript
复制
def languages_display
  [
    ["English", "en"],
    ["Spanish", "sn"],
    ["French", "fr"],
  ]
end

然后从输入字段调用您的助手:

代码语言:javascript
复制
<%= f.input :state, :collection => languages_display %>

然后在你的show视图中,你可以调用下面的helper,这样它就会显示英语,而不是你在数据库中的en:

代码语言:javascript
复制
def show_language(language)
  {
    "en" => 'English',
    "sp" => 'Spanish',
    "fr" => 'French'
  }[language]
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13665997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档