我正在寻找一些关于如何获取属性并通过方法处理它以返回不同内容的帮助.但我以前从未这样做过,我不确定从哪里开始.我想改变一个名字:字符串属性从“乔治华盛顿”或“约翰昆西亚当斯”变成名字只有“乔治”和“约翰”.
我想也许帮助方法最好,比如
users_helper.rb
def first_name end
然后调用@ user.name.first_name,这最初是如何工作的?有人可以解释我下一步可以将@ user.name传递给方法吗?我见过这样的事情,但不太明白括号……
def first_name(name) puts name end
有人可能会破坏rails / ruby这种类型的东西吗?非常感谢!
解决方法
括号(可选)括起参数列表.
def first_name(full_name) full_name.split(" ")[0] end
这假设参数不是nil.
> puts first_name "Jimmy McKickems" Jimmy > puts first_name "Jeezy" Jeezy
但这不是一个字符串方法,因为你的假设现在是:
@user.full_name.first_name # Bzzt.
代替:
first_name @user.name
这可以包含在模型类本身中:
class User < ActiveRecord # Extra stuff elided def first_name self.full_name.blank? ? "" : self.full_name.split(" ")[0] end end
额外的代码检查名称是否为空或空格(空白?来自Rails).如果是,则返回空字符串.如果不是,则将其拆分为空格并返回结果数组中的第一项.