问:因此,我尝试使用.first和[0]获取字符串中的第一个字符。我尝试了使用ruby docs的其他方法,但是即时通讯得到了相同的结果。我收到此错误:NoMethodError(nil:NilClass的未定义方法“ []”)。有任何想法吗?
def to_h
属性。紧凑的。合并(PHOTO_URL :照片。网址,如first_name :如first_name ,姓氏:姓氏,last_name_initial :姓氏。第一)端
仅当我尝试提取第一个字符时,“ last_name”为nil。没有第一我得到这个:
first_name : “ Lexie” ,
last_name : “ Johnson” ,
last_name_initial : “ Johnson”
答:从用户那里获取信息是我们构建应用程序时必须处理的常见任务。这通常发生在创建用户帐户,商业订单或其他任何时候应用程序必须询问“您是谁”的情况下。通常,我们会同时为名字和姓氏创建一个字段,以允许用户分隔其姓名,以使我们(应用程序开发人员)更容易显示一个或两个。在本文中,我将讨论如何格式化用户给应用程序提供的全名,而不必担心创建两个文本字段。当然,您可以在Rails应用程序的方法中使用此代码。
假设我有一个用于创意的变量,我将其称为“名称”,而“名称”具有值。
名字=“詹姆斯·伯爵·琼斯”
我只想显示我的“名称”值的名字和姓氏,我可以这样做:
名称= name.split
名字= names.first
姓氏= names.last
现在,这会将“名称”中的三个单词拆分为一个数组。然后,我将firstname设置为数组中的第一项,并将lastname设置为数组中的最后一项。
运行:
p“#{firstname}#{lastname}”
然后将输出:
“ James Jones”
我们如何执行另一个常见的格式设置任务,我们可以显示姓氏,然后用逗号分隔其余的名字,我们可以这样做:
名称=名称。拆分
姓氏=名称。流行名=剩余名称=名称
.join('')
在这里,我们再次拆分名称,然后放入pop方法,该方法将数组的最后一次从数组中拉出,然后返回它。这将只剩下剩下的名称作为firstname_remaining变量使用。我将数组的其余部分与用于firstname_remaining的空格连接在一起(其中将包括名字和任何剩余的名字信息,例如中间名)。
运行:
p“#{lastname},#{firstname_remaining}”
然后输出:
“琼斯,詹姆斯·伯爵”
最后,我最近看到的一个常见现象是在显示用户名时使用最后一个缩写。我们可以做这样的事情:
名称= name.split
名字= names.first
lastinitial = names.last [0,1]
在这里,我对lastinitial变量进行一些修整。您会看到带有括号和两个数字的内容。第一个数字是我正在修剪的字符串中的偏移量(零是第一个字母是字符串),第二个数字是我从该偏移量显示多少个字符。
运行:
p“#{firstname}#{lastinitial}。”
然后将输出:
“ James J.”
就是这样。当然,您可能会考虑将其适应于用户名末尾有“ Jr”的用户。–有时可以使用下拉菜单解决。我希望也许我已经向您介绍了您以前可能没有意识到的Ruby中的一些知识。直到下一次。