Rails button_to与HTML Button标签的区别

4

我刚接触Rails,想在我的页面上添加一些按钮。 我发现可以使用HTML标签或Rails的“button_to”。 但是,我没有找到它们之间的区别。

从我在S.O.看到的情况来看,似乎button_to更容易从控制器中调用函数等。 但是,HTML按钮似乎更容易定制? 这是真的吗? 还有其他区别吗。

只是想确保在我的新项目上做正确的事情。 提前感谢。


1
最后,button_to将生成一个HTML按钮(因此它只是一个方便的封装器)。 - Sergio Tulentsev
1
@CameronJones: 你有没有阅读过关于button_to文档 - DMKE
2个回答

12

button_to像Rails视图中的所有其他帮助程序(例如link_toform_forimage_tag等)一样,只是将您的Rails命令转换为HTML代码。我们可以说这是一种编写“纯HTML”的快捷方式。

对于button_to,您可以在此处查看参考资料(以及打印出的内容):http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-button_to

例如:

<%= button_to "New", action: "new" %>
# => "<form method="post" action="/controller/new" class="button_to">
#      <div><input value="New" type="submit" /></div>
#    </form>"

我建议你使用这些辅助工具,因为它们更符合 Rails 的风格,可以提高你的编码速度。


谢谢。很好的回答。后续问题。如果我不想使用button_to,我该如何使用Button的"onclick"属性来调用我的控制器中的函数? - dev
1
@CameronJones 如果你不想使用button_to,而是只使用HTML来调用特定的操作,你可以简单地将该操作的路径放在按钮的"action"属性中(就像我的示例代码一样),或者更简单地使用一个链接。例如:<a href="path_to_my_controller/name_of_the_action"> - damoiser
更多关于"Rails"的内容,你可以使用帮助器来创建"路径",例如:<%= new_user_path %>(将路径附加到名称),这将打印出例如:"users/new"。你可以在routes.rb文件中查看所有的路由或者在终端中运行以下命令:"rake routes"。 - damoiser

1

button_to标签和HTML标签一样容易自定义。

有一个约定,不在这些元素内部样式化HTML标签,而是在包含的*.css文件中进行。所有HTML标签的自定义应该是添加类和id。

要在Rails中完成这个操作,你应该使用:

<%= button_to "New", { action: "new" }, class: "my_class", id: "my_id" %>

它将生成以下类似的html代码:

<form method="post" action="/controller/new" class="button_to">
  <div><input class="my_class" id="my_id" value="New" type="submit" /></div>
</form>"

正如您所看到的,使用Rails助手函数,您可以用更少、更易读的代码编写相同的功能。

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