link_to 名字和姓氏合二为一 link

link_to first name and last name as one link

我的名字和姓氏都 link 到用户个人资料:

= link_to (@post.user.fname), user_path(@post.user_id) 
= link_to (@post.user.lname), user_path(@post.user_id)

这是两个独立的 link。当我将鼠标悬停在名字上时,它只会突出显示名字。反之亦然。 (示例只是随机生成的名称)

如何将名字和姓氏合二为一link_to以便在全名下划线?

将姓名与 string interpolation 合并:

= link_to "#{@post.user.fname} #{@post.user.lname}", user_path(@post.user_id)

还有更好的解决方法,在returns全名returns用户模型中添加一个方法

#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魔法的另一个例子:

= link_to @post.full_name, @post.user

如您所见,我省略了 user_path 助手,只传递了一个 @post.user 对象,Rails 能够在后台为我构建路径助手。

如果 first 或 last 可以为空,你可以做这样的事情:

#app/models/user.rb

def full_name
  [fname.presence, lname.presence].compact.join(' ')
end