Rails - 在link_to'删除'中用图像替换文本

时间:2014-05-07 08:37:57

标签: ruby-on-rails methods ruby-on-rails-4 action

我想改变的基本代码片段是:

<%= link_to 'Delete', post, method: :delete, data: { confirm: 'Are you sure?' } %>

我的问题是:是否可以替换“删除”文本以显示与原始代码执行相同操作的图像?即用“X”

的图像替换“删除”

我试过了:

<%= link_to 'img src="path_to_image"', post, method: :delete, data: { confirm: 'Are you sure?' } %>

并不是真的希望上面的代码可以工作,但我想我会试一试。正如预期的那样,它返回“a href =”path_to_image“”代替'删除'

还以为我应该添加

rails -v
Rails 4.1.0

3 个答案:

答案 0 :(得分:7)

您可以使用image_tag帮助器

来执行此操作
<%= link_to post, method: :delete, data: {confirm: 'Are you sure?'} do %>
  <%= image_tag(your_image_url) %>
<% end %>

或者,如果你想在一行中这样做:

<%= link_to image_tag(your_image_url), post, method: :delete, {confirm: 'Are you sure?'} %>

关于您的路径问题,因为您的图片文件似乎放在合适的资源目录中,这应该有效:

<%= link_to post, method: :delete, data: {confirm: 'Are you sure?'} do %>
  <%= image_tag('x_small_icon') %>
<% end %>

答案 1 :(得分:2)

试试这个,

<%= link_to image_tag('/img/img.png'), post, method: :delete, data: { confirm: 'Are you sure?' } %>

答案 2 :(得分:2)

没有人真正指出你的原始尝试不起作用的原因:

<%= link_to 'img src="path_to_image"', post, method: :delete, data: { confirm: 'Are you sure?' } %>

原因是link_to的第一个参数不是有效的img标记 - 它错过了<>。请记住,第一个参数只是包含在生成的a标记的内容中,没有任何修改。如果您将其更改为

<%= link_to '<img src="path_to_image">', post, method: :delete, data: { confirm: 'Are you sure?' } %>
那么它会起作用。做其他海报建议的更好,就是使用rails image_tag帮助器,但我认为有人应该指出为什么你的原始代码被破坏而不只是告诉你如何做到这一点:)