Rails 中 link_to 用法

最常见的用法

访问 /jobs

例如,想访问 jobs#indexjobs Controller 中的 index 这个 Action

<%= link_to "Jobs", jobs_path %>

Jobs

当然也可以加上括号

<%= link_to("Jobs", jobs_path) %>

Jobs

访问 /jobs/:id

例如,想访问 jobs#showjobs Controller 中的 show 这个 Action

<%= link_to job.title, job_path(job) %>

标题

添加样式 CSS 或 ID

有时需要给链接加上样式,那么可以利用 classid

<%= link_to("Add a job", new_job_path, class: "btn btn-default" id: "add_job") %>

Add a job

使用 block

所谓 block ,其实就是一组代码,举个例子

def test
  ...
end

这里就是一个 block ,由 def test 开始,由 end 结束,中间可能包括多行代码。

link_to 也可以支持 block 的写法,特别是当需要在将多个元素一起作为超链接的显示内容时。

<%= link_to edit_admin_job_path(job) do %>
  
<% end %>

在上面例子中只是将一个 font-awsome icon 当作链接显示的内容,其实可以有很多条。

修改 HTTP 类型

默认情况下 link_to 中 HTTP 的方法为 GET,这是可以修改的。

delete

<%= link_to("Delete", admin_job_path(job), method: :delete, data: { confirm: "Are you sure?"}) %>

Delete

<%= link_to("登出", destroy_user_session_path, method: :delete) %>

登出

post

<%= link_to("Hide", hide_admin_job_path(job), method: :post, class: "btn btn-xs btn-default") %>

Hide

链接到图片

使用 image_tag

<%= link_to image_tag(tile.image.url), tile %>

也可以使用 link_to 的 block 来定义

<%= link_to title %>
  <%= image_tag(title.image.url) %>
<% end %>

使用 image_path

<%= link_to 'Back to Image', image_path(@image) %>

给图片添加 alt 属性

<%= link_to image_tag(tile.image.url), tile, alt: "title" %>

其它

链接锚点

<%= link_to "Home", root_path(anchor: "home") %>

Home

在新窗口打开

<%= link_to "Bing", "http://cn.bing.com", target: "_blank" %>

Bing

支持 javascript

添加 remote: true 来让链接来处理 javascript。

<%= link_to "Javascript", root_path, :remote => true %>

Javascript

link_to_if

这个相当于 link_to 再加上一个条件判断
它的语法是:

link_to_if(condition, name, options = {}, html_options = {}, &block)

它会先判断条件,如果条件成立,则依照后面给定的 name , options 等创建超链接,否则只会返回 name

<%= link_to_if(@current_user.nil?, "Login", new_user_session_path) %>
# If the user isn't logged in...
# => Login

<%=
   link_to_if(@current_user.nil?, "Login", new_user_session_path) do
     link_to(@current_user.login, “Logout”, destroy_user_session_path)
   end
%>
# If the user isn't logged in...
# => Login
# If they are logged in...
# => my_username

Links

  • How to use link_to in Rails
  • ActionView::Helpers::UrlHelper

你可能感兴趣的:(Rails 中 link_to 用法)