6

我正在尝试使用button_torails 助手。我写了以下代码:

<%= button_to 'Edit Item', edit_item_path(@item), :class => 'mark-button' %>

并收到以下错误消息

No route matches "/items/1/edit"

但是当我刷新页面时,它会执行适当的操作。我得到的页面的 URLlocalhost:3000/items/1/edit是正确的 URL。如果我将button_to命令切换到link_to没有错误加载的页面。意思是这段代码:

<%= link_to 'Edit Item', edit_item_path(@item), :class => 'mark-button' %>

负载很好。也许有一些button_to我不知道的功能,但我很迷茫。

4

3 回答 3

5

我认为您可能在滥用 button_to。我一直认为,如果您要链接到编辑操作,则应该使用 link_to。按钮似乎用于需要发布/放置数据的操作,例如更新表单或删除记录。

更新:

默认情况下,button_to 使用 POST 而不是 GET。因此,当您只访问 URL(即 GET)时它就可以工作。

于 2011-01-16T23:21:39.770 回答
2

button_to 默认为 POST,link_to 默认为 GET。

如果您确实需要 button_to,您可以将默认方法更改为 GET 以进行编辑和其他链接。

例如:

<%= button_to 'Edit', edit_user_path(@user), :method => :get %>
于 2014-01-07T06:04:06.680 回答
-2

Ruby -v 2.8.6,Rails 6.1.4.1

<%= button_to 'Edit', edit_item_path(item), :method => :get %> 因为使用表达式 (@item) 您没有定义要编辑的对象,因为 (@item) 它不是特定对象, 有好几个,你只需要定义一个你想编辑的, :method => :get 这个方法很完美

于 2021-11-13T22:46:30.513 回答