Ruby on Railsアプリで、プロジェクト名とプロジェクトID値の配列を作成しましたが、名前の長さを切り捨てたいと思います。現在のコードは次のとおりです。
names = active_projects.collect {|proj| [proj.name, proj.id]}
ブロックに切り捨て関数を追加しようとしましたが、クラスエラーの未定義のメソッドを取得しています。
よろしくお願いします-私はまだこれに頭を包むことができません。
フォローしてみてください
name=[]
active_projects.collect {|proj| name << [proj.name, proj.id]}
編集済みこれは
names= active_projects.collect {|proj| [proj.name.to_s[0..10], proj.id]}
私が質問を正しく理解したと仮定すると:
max_length = 10 # this is the length after which we will truncate
names = active_projects.map { |project|
name = project.name.to_s[0..max_length] # I am calling #to_s because the question didn't specify if project.name is a String or not
name << "…" if project.name.to_s.length > max_length # add an ellipsis if we truncated the name
id = project.id
[name, id]
}
Railsアプリケーションでは、これに切り捨てメソッドを使用できます。
コードがビューにない場合は、メソッドを使用可能にするためにTextHelperモジュールを含める必要があります。
include ActionView::Helpers::TextHelper
その後、次のことができます。
names = active_projects.collect { |proj| [truncate(proj.name), proj.id] }
デフォルトの動作では、30文字に切り捨てられ、削除された文字が「...」に置き換えられますが、これは次のようにオーバーライドできます。
names = active_projects.collect {
# truncate to 10 characters and don't use '...' suffix
|proj| [truncate(proj.name, :length => 10, :omission => ''), proj.id]
}