8

これが私が見つけることができない前に答えられた場合。

私は次のものを持っています:

= f.collection_select :sex_id, @sexes, :id, :name

そしてこれはコントローラーで:

@sexes = Sex.all

次のように、性別はすべて小文字で格納されます。

id|name
 1|steer
 2|heifer
 3|holstein

大文字の最初の文字で出力する必要があります。

Steer
Heifer
Holstein

私は試した:

= f.collection_select :sex_id, @sexes, :id, :name.capitalize
= f.collection_select :sex_id, @sexes, 'id', 'name'.capitalize

しかし、それらは機能しません。実際に機能するとは思っていませんでしたが、これを投稿する前に試してみる必要がありました。

4

3 に答える 3

8

collection_select各オブジェクトでメソッドを呼び出して、オプション値のテキストを取得します。モデルに新しいメソッドを追加して、正しい値を取得できます。

def name_for_select
  name.capitalize
end

次にビューで:

= f.collection_select :sex_id, @sexes, :id, :name_for_select
于 2010-11-19T19:17:02.547 に答える
0

RoR4 でこれを行うより簡単な方法は、ヒューマナイズ メソッドを使用することです。したがって、ビュー コードは次のようになります。

= f.collection_select :sex_id, @sexes, :id, :humanize

追加のメソッドは必要ありません。

于 2014-07-03T20:38:48.003 に答える
0

最初の試行が機能しない理由は、実際の変数ではなく、フィールド名を表すシンボルまたは文字列を大文字にしようとしているからです。

このようなことを行うと、データはビューに送信される前に大文字になります。

@sexes = Sex.all    
@sexes = @sexes.each{|sex| sex.name.capitalize}

また

@sexes = Sex.all.each{|sex| sex.name.capitalize}
于 2010-11-19T19:02:39.483 に答える