Rails 3:如何将链接显示为按钮?

39
在一些非表单页面上,我有一些链接,这些链接用按钮的形式会比超链接更好看…
我曾认为可以使用button_to而不是link_to,但是button_to似乎总是被视为发布。
有没有一种简单的方法来仅仅将一个(非提交)链接替换为一个按钮?

我为我的网站按钮设计了自定义样式,因此,当我想让链接看起来像按钮时,我只需将相同的CSS样式应用于<a>。完成。 - Matchu
4个回答

82

你只需要在 button_to 的末尾添加 :method => "get",就可以让它像链接一样处理了。

使用 button_to

使用 users_path

<%= button_to "BUTTON: link version", users_path, :method => "get" %>

CSS方法

或者,你可以采用从网页设计角度更加简洁的方式,用样式使链接看起来像一个按钮,而不是将表单实际插入到你的HTML中(这就是button_to所做的)。这种方法有几个好处:

  • 避免了不应该存在于HTML中的表单
  • 使erb保持干净和正常,没有意外
  • 非常灵活,可以按照你想要的方式进行自定义

这里有一篇很棒的文章,教你如何做。下面是其中一个小片段的代码,真正的关键在于调整边框、填充和背景图像等属性。

a.button {
  background: transparent url('bg_button_a.gif') no-repeat scroll top right;
  color: #444;
  display: block;
  float: left;
  font: normal 12px arial, sans-serif;
  height: 24px;
  margin-right: 6px;
  padding-right: 18px; /* sliding doors padding */
  text-decoration: none;
}

这段代码来自于上面的链接。无论您选择哪种方法都应该能够正常工作,祝您使用愉快!


如果您的目标只是让链接看起来像按钮,而不是在页面中实际添加一个完整的表单,那么您也可以将链接样式设置为与按钮相似。 - d11wtq
是的,但问题确实要求以按钮的方式使用链接。而上面的评论也指出了这个问题。 - Paul Kaplan
已编辑帖子以解决您的问题。 - Paul Kaplan
非常出色的答案,谢谢!CSS方法非常酷。 - jpw
必须使用GET方法吗?那POST方法呢? - Ganesh Kunwar
显示剩余2条评论

20

我认为你想要的只是视图。如果是这种情况,那么您只需向链接中的类对象添加一个类即可。

<%= link_to '添加类', new_subject_path, class: "btn btn-primary"%>


2
这应该是最好的答案。 - Jeffrey C
5
你可能想要提到,你正在使用的类来自于Bootstrap。 - richardsonae

12

最近我不得不这样做,因为我的表单在使用link_to时与button_to的表现不同,我需要链接提供的功能。我找到的最佳解决方案根本不使用CSS,而是调用.html_safe来转义Ruby代码中的HTML并正确地显示链接作为按钮。你想要做的是:

<%= link_to "<button>This is a button</button>".html_safe, some_path, :id => "button_id", :class => "button_class" %>

5
以后参考,处理嵌入HTML时,可以向link_to助手传递一个块,这样会得到更干净的解决方案。请注意不要改变原意。 - Noz
将近10年过去了。也许Rails已经发生了很多变化,但这确实是一个非常简洁和易于解决的方案,谢谢! - MonsterBasket

2

如果您只是想让链接看起来像一个按钮。

link_to改为button_to就可以了。


1
正如我的帖子所指出的那样,当我尝试时,它总是使用Post而不是Get。 - jpw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接