如何在下面的代码示例中将国家/地区列表的第一个字母大写? 我的问题是关于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” 我需要它在数据库中被放下,但是为了清晰起见,我想将第一个字母大写/大写。
答案 0 :(得分: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。
请参阅:using capitalize on a collection_select
编辑:我注意到你的html没有指定你正在使用的DataState类的哪个属性作为你选择的文本。如果您正在使用rails,则应查看collection_select
表单助手。
答案 1 :(得分:0)
另一种方法是添加 css 的 text-transform: uppercase 属性,如下所示:
<% = f.input: state, collection: DataState.where (: country => "1"), style: 'text-transform: uppercase;' %>