Ruby on Rails - link_to button / css

45

我现在正在开发一个简单的api和web界面,同时学习RoR。我一直在按照指南进行尝试和测试。我已经创建了一些HTML模板,现在开始将它们转换成视图。

在我的HTML中,我有以下代码,是一个带有CSS样式的按钮:

 <input type="submit" name="" value="Add" id="open-contacts-dialog-btn" class="inbox-sf-add-btn tip" title="Open an dialog to add a new contact"/>  

这是我的面板中的按钮,我想将其链接到/book/new/,我知道我需要在这里使用link_to,但我的最终代码应该是什么?我尝试过的代码如下:

<%= link_to "Add", new_admin_course_path, :id=>"open-contacts-dialog-btn", :class=>"inbox-sf-add-btn tip" %>

但它没有添加我的CSS样式,只是生成了文本“Add”。 任何帮助都将非常有用。谢谢

3个回答

89

link_to 生成的是 <a> 标签,而不是 input type="submit"。你应该使用 button_to,它会生成一个带有 input type="submit" 按钮的表单来提交链接:

<%= button_to "Add", new_admin_course_path, :id => "open-contacts-dialog-btn",
      :class => "inbox-sf-add-btn tip", :method => :get %>

请注意:method => :get。没有它,button_to将生成一个方法设置为POST的表单。


5
非常感谢,这个有效。使用 Twitter Bootstrap 的人需要注意,此表单不会生成任何<button>标签,而是生成一个<input>标签,尽管 ActionView 帮助程序的名称是 button_to。更多信息请参见:http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-button_to。 - JD.

12

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

<%= link_to "<button>Add</button>".html_safe, new_admin_course_path, :id=>"open-contacts-dialog-btn", :class=>"inbox-sf-add-btn tip" %>

3
提醒其他Bootstrap用户,此方法无法在导航栏中使用按钮,因为它会将CSS类放在<a>标签而不是<button>标签上。请注意,此解决方案的作者没有处理Bootstrap,这并不意味着该解决方案对于其他情况无效。 - Marklar
你可以将该类放在<button>标签中,方法是在转义的HTML中添加它... <%= link_to "<button class='your-class-here'>Add</button>".html_safe, new_admin_course_path, :id=>"open-contacts-dialog-btn", :class=>"inbox-sf-add-btn tip" %> - aronmoshe_m

0

但是它没有添加我的CSS样式
你的意思是?带有类inbox-sf-add-btntip的链接(a元素)已经生成了,对吧?那么问题出在哪里呢?

如果你想要严格的按钮(input元素而不是a),你可以在你的HTML表单(form元素)的action属性中指定/book/new(或者<%= new_admin_course_path %>)。


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