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
我的名字和姓氏都 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