在collection_select上使用大写
如果在我找不到它之前已经回答了这个问题。
我有以下内容:
= f.collection_select :sex_id, @sexes, :id, :name
这在控制器中:
@sexes = Sex.all
性别都以小写forms存储,如下所示:
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
但它们不起作用,我并没有真正期待它们,但在发布之前不得不尝试它们。
collection_select
在每个对象上调用一个方法来获取选项值的文本。 您可以在模型中添加新方法以获得正确的值:
def name_for_select name.capitalize end
然后在视图中:
= f.collection_select :sex_id, @sexes, :id, :name_for_select
您的初始尝试不起作用的原因是您试图将表示字段名称的符号或字符串大写,而不是实际变量。
您可以执行类似的操作,然后在将数据发送到视图之前将数据大写。
@sexes = Sex.all @sexes = @sexes.each{|sex| sex.name.capitalize}
要么
@sexes = Sex.all.each{|sex| sex.name.capitalize}
在RoR4中执行此操作的更简单方法是使用humanize方法。 因此,您的视图代码如下所示:
= f.collection_select :sex_id, @sexes, :id, :humanize
不需要任何额外的方法!