2

我目前正在使用 link_to:

<%= link_to edit_webcast_path(@webcast), :class => 'btn'  do %>
    <i class="icon-pencil"></i> Edit Webcast
<% end %>

但是我想对 button_to 做同样的事情,但是 button_to 必须有一个第一个标签参数传递给它,否则它将使用路径作为它的标签。

<%= button_to edit_webcast_path(@webcast), :class => 'btn'  do %>
    <i class="icon-pencil"></i> Edit Webcast
<% end %>

... 生成一个带有标签的按钮,该标签是已解析的 edit_webcast_path(@webcast) 路径。实际上 do 似乎没有效果。

我尝试将 html 作为第一个参数直接传递:

<%= button_to "<i class=\"icon-white icon-minus-sign \"></i> Edit Webcast".html_safe, webcast_path(@webcast), :class => 'btn'%>

但这会导致一个带有标签的按钮显示我传入的 html 字符串的一部分。查看生成的 HTMl,我可以看到第一个参数的内容放置在输入的 value 属性中,而不是输入本身。

我怎样才能让它工作?

4

4 回答 4

2

Railsbutton_to生成一个带有 html <input type="submit">element 的表单,而不是<button>一个。您可以尝试覆盖它或编写自己的助手来生成<button>看看这个例子

于 2012-06-05T17:03:50.157 回答
0

在 Rails 中, button_to 将尝试发布或放置,因此它实际上不是“常规”按钮,您可以设置链接的样式,使其看起来和行为像一个按钮

于 2012-06-06T16:35:46.663 回答
0

button_to您可以像这样在元素中添加 HTML :

<%= button_to "New", new_articles_path do %>
  Create a <strong>new article</strong>
<% end %>

更多信息:https ://apidock.com/rails/ActionView/Helpers/UrlHelper/button_to

于 2020-09-05T17:35:12.193 回答
-4

你这样做是不对的。您正在尝试添加一个不必要的 html 元素来控制 CSS 作业。

相反,只需为按钮创建一个类或 Id 并将其添加到 css 中:

 .btn { padding-left:30px; background: url(pencil.png) no-repeat; }
于 2012-06-20T02:55:44.537 回答