2

Ruby on Railsアプリで、プロジェクト名とプロジェクトID値の配列を作成しましたが、名前の長さを切り捨てたいと思います。現在のコードは次のとおりです。

names  = active_projects.collect {|proj| [proj.name, proj.id]}

ブロックに切り捨て関数を追加しようとしましたが、クラスエラーの未定義のメソッドを取得しています。

よろしくお願いします-私はまだこれに頭を包むことができません。

4

3 に答える 3

1

フォローしてみてください

name=[]
active_projects.collect {|proj| name << [proj.name, proj.id]}

編集済みこれは

names= active_projects.collect {|proj|  [proj.name.to_s[0..10], proj.id]}
于 2010-04-08T14:24:55.517 に答える
1

私が質問を正しく理解したと仮定すると:

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]
}
于 2010-04-08T14:39:27.143 に答える
0

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]
}
于 2010-04-08T15:09:06.370 に答える