我有名字和姓氏,它们都链接到用户个人资料:
= link_to (@post.user.fname), user_path(@post.user_id)
= link_to (@post.user.lname), user_path(@post.user_id)
这是两个单独的链接。当我将鼠标悬停在第一个名称上时,它只突出显示第一个名称。反之亦然。 (示例只是一个随机生成的名称)
如何将名字和姓氏设为一个link_to,以便强调全名?
答案 0 :(得分:11)
使用string interpolation
加入姓名:
= link_to "#{@post.user.fname} #{@post.user.lname}", user_path(@post.user_id)
有一个更好的解决方案,在用户模型中添加一个返回全名的方法。
#app/models/user.rb
def full_name
"#{fname} #{lname}"
end
并在link_to
帮助器中使用它:
= link_to @post.user.full_name, user_path(@post.user_id)
还有另一种解决方案,使用delegate
方法,这是一个例子:
#app/models/post.rb
# Obviously post belongs to user
belongs_to :user
delegate :full_name, to: :user
# which means if the `full_name` method
# invokes on the @post model `delegate` it to user
用法:
= link_to @post.full_name, user_path(@post.user_id)
以下是 Rails magic 的另一个例子:
= link_to @post.full_name, @post.user
正如您所看到的,我省略了user_path
帮助程序并只传递了一个@post.user
对象,Rails能够为我构建路径帮助程序。
答案 1 :(得分:0)
如果第一个或最后一个可以为空白,则可以执行以下操作:
#app/models/user.rb
def full_name
[fname.presence, lname.presence].compact.join(' ')
end