在collection_select上使用大写

Tob*_*ner 8 collections ruby-on-rails capitalize

如果在我找不到之前已经回答了这个问题.

我有以下内容:

= f.collection_select :sex_id, @sexes, :id, :name
Run Code Online (Sandbox Code Playgroud)

这在控制器中:

@sexes = Sex.all
Run Code Online (Sandbox Code Playgroud)

性别都以小写形式存储,如下所示:

id|name
 1|steer
 2|heifer
 3|holstein
Run Code Online (Sandbox Code Playgroud)

我需要他们用Capital First字母输出:

Steer
Heifer
Holstein
Run Code Online (Sandbox Code Playgroud)

我试过了:

= f.collection_select :sex_id, @sexes, :id, :name.capitalize
= f.collection_select :sex_id, @sexes, 'id', 'name'.capitalize
Run Code Online (Sandbox Code Playgroud)

但它们不起作用,我并没有真正期待它们,但在发布之前必须先尝试一下.

zet*_*tic 7

collection_select在每个对象上调用一个方法来获取选项值的文本.您可以在模型中添加新方法以获得正确的值:

def name_for_select
  name.capitalize
end
Run Code Online (Sandbox Code Playgroud)

然后在视图中:

= f.collection_select :sex_id, @sexes, :id, :name_for_select
Run Code Online (Sandbox Code Playgroud)