Ruby on Rails 中的 Button_to 错误路线

发布于 2024-10-12 00:56:29 字数 561 浏览 6 评论 0原文

我正在尝试使用 button_to Rails 帮助程序。我编写了以下代码:

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

并收到以下错误消息

没有路由匹配“/items/1/edit”

但是当我刷新页面时,它会转到适当的操作。我得到的页面的 URL 是 localhost:3000/items/1/edit 这是正确的 URL。如果我将 button_to 命令切换为 link_to,则页面加载时不会出现错误。这段代码的含义是:

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

加载正常。也许有一些我不知道的 button_to 功能,但我迷失了。

I'm trying to use the button_to rails helper. I wrote the following code:

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

and got the following error message

No route matches "/items/1/edit"

But when I refresh the page it goes to the appropriate action. The URL of the page i get is localhost:3000/items/1/edit which is the correct URL. If I switch the button_to command to link_to the page loaded with no errors. Meaning this code:

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

loads fine. Maybe there is some feature of button_to I'm not aware of, but I am at a lost.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

七色彩虹 2024-10-19 00:56:29

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

更新:

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

I think you might be misusing button_to. I've always thought that if you're linking to the edit action, you should be using link_to. Buttons seem to be for actions that need to post/put data such as updating a form or deleting a record.

Update:

By default, button_to uses POST instead of GET. Hence it working when you just visit the URL (ie GET).

稚气少女 2024-10-19 00:56:29

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

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

例如:

<%= button_to 'Edit', edit_user_path(@user), :method => :get %>

button_to defaults to POST, and link_to defaults to GET.

If you really need button_to you can change the default method to GET for edit and other links.

for ex:

<%= button_to 'Edit', edit_user_path(@user), :method => :get %>
云醉月微眠 2024-10-19 00:56:29

Ruby -v 2.8.6,Rails 6.1.4.1

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

Ruby -v 2.8.6, Rails 6.1.4.1

<%= button_to 'Edit', edit_item_path(item), :method => :get %> because with expression (@item) you do not define the object you want to edit, because (@item) it is not a specific object, there are several and you need to define only the one you want to edit, :method => :get this method is perfect

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文