Big*_*igL 0 ruby ruby-on-rails hyperlink link-to
I have the first name and last name which both link to the users profile:
= link_to (@post.user.fname), user_path(@post.user_id)
= link_to (@post.user.lname), user_path(@post.user_id)
Run Code Online (Sandbox Code Playgroud)
These are two separate links. When I hover the mouse over the first name it only highlights the first name. And vice versa. (Example is just a randomly generated name)
How do I make the first name and last name one single link_to so it underlines the full name?
Зел*_*ный 11
加入姓名string interpolation:
= link_to "#{@post.user.fname} #{@post.user.lname}", user_path(@post.user_id)
Run Code Online (Sandbox Code Playgroud)
有一个更好的解决方案,向用户模型添加一个返回全名的方法.
#app/models/user.rb
def full_name
"#{fname} #{lname}"
end
Run Code Online (Sandbox Code Playgroud)
并在link_to帮助器中使用它:
= link_to @post.user.full_name, user_path(@post.user_id)
Run Code Online (Sandbox Code Playgroud)
还有另一个解决方案,使用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
Run Code Online (Sandbox Code Playgroud)
用法:
= link_to @post.full_name, user_path(@post.user_id)
Run Code Online (Sandbox Code Playgroud)
这是Rails魔法的另一个例子:
= link_to @post.full_name, @post.user
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我省略了user_path助手,只是传递了一个@post.user对象,Rails能够为我构建路径助手.