0

在下面的代码示例中,如何将国家/地区列表的第一个字母大写?我的问题是关于 simple_form,而不是可以使用 collection_select 的常规表单。

    = p.input :state,
              :readonly => "readonly",
              :collection => DataState.where(:country => "1"),
              :selected => 1,
              :id => "state",
              :name => "state",
              :prompt => "Please choose"

问题是状态列表在数据库中并像“alamaba”、“new york”一样保存,我需要在数据库中将其小写,但为了视觉清晰,想将第一个字母大写/大写。

4

2 回答 2

3

尝试这个:

在您的 DataState 模型中,添加一个方法来显示您的州名称的大写版本

class DataState < ActiveRecord::Base
  def capitalized_state
    state.capitalize
  end
end

然后使用这种新方法列出您的选择

根据您是尝试将状态的 id 保存为关联还是仅保存字符串,erb 将是

<%= f.input :state, collection: DataState.where(:country => "1").pluck(:capitalized_state) %>

或者

<%= f.input :state, collection: DataState.where(:country => "1"), value_method: :id, label_method: :capitalized_state %>

其中前者用于状态名称,后者用于关联 ID。

看到这个:在collection_select上使用capitalize

编辑:我注意到您的 html 没有指定您使用的 DataState 类的哪个属性作为您选择的文本。如果您使用的是 rails,您应该查看collection_select表单助手。

于 2013-10-15T18:34:20.547 回答
0

一种解决方法也是添加 css 的 text-transform: uppercase 属性,如下所示:

<% = f.input: state, collection: DataState.where (: country => "1"), style: 'text-transform: uppercase;' %>
于 2021-03-05T00:35:52.590 回答