如果在我找不到之前已经回答了这个问题。
我有以下内容:
= f.collection_select :sex_id, @sexes, :id, :name
这在控制器中:
@sexes = Sex.all
所有性别都以小写形式存储,如下所示:
id|name
1|steer
2|heifer
3|holstein
我需要他们输出Capital First字母:
Steer
Heifer
Holstein
我试过了:
= f.collection_select :sex_id, @sexes, :id, :name.capitalize
= f.collection_select :sex_id, @sexes, 'id', 'name'.capitalize
但它们不起作用,我并没有真正期望它们,但在发布之前必须先试用它们。
答案 0 :(得分:7)
collection_select
在每个对象上调用一个方法来获取选项值的文本。您可以在模型中添加新方法以获得正确的值:
def name_for_select
name.capitalize
end
然后在视图中:
= f.collection_select :sex_id, @sexes, :id, :name_for_select
答案 1 :(得分:0)
您的初始尝试无效的原因是您试图将符号或字符串大写,而不是实际变量。
您可以执行此类操作,然后在将数据发送到视图之前将数据大写。
@sexes = Sex.all
@sexes = @sexes.each{|sex| sex.name.capitalize}
或
@sexes = Sex.all.each{|sex| sex.name.capitalize}
答案 2 :(得分:0)
在RoR4中执行此操作的更简单方法是使用humanize方法。因此,您的视图代码如下所示:
= f.collection_select :sex_id, @sexes, :id, :humanize
不需要任何额外的方法!