在ruby on rails应用程序中,我构建了一个项目名称和项目ID值的数组,但是想要截断名称的长度。目前的代码是:
names = active_projects.collect {|proj| [proj.name, proj.id]}
我试图在块中添加truncate函数,但是我发现了类错误的未定义方法。
提前致谢 - 我还是无法解决这个问题。
答案 0 :(得分:1)
尝试以下
name=[]
active_projects.collect {|proj| name << [proj.name, proj.id]}
编辑这应该是
names= active_projects.collect {|proj| [proj.name.to_s[0..10], proj.id]}
答案 1 :(得分: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]
}
答案 2 :(得分:0)
在Rails应用程序中,您可以使用truncate方法。
如果您的代码不在视图中,那么您需要包含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]
}