所以,我有这个表格声明:
<%= form_for 'students_list', {:url => update_students_list_stream_url(@stream), :method=>:patch} do |students_list_form| %>
Run Code Online (Sandbox Code Playgroud)
正如 API 文档中所述,但这会导致我出错:
No route matches [POST] "/streams/26/edit-students-list"
Run Code Online (Sandbox Code Playgroud)
所以它仍然尝试发布,即使我的 HTML 输入有:
<input type="hidden" name="_method" value="patch" />
Run Code Online (Sandbox Code Playgroud)
来自 Rails 指南:
Rails 通过使用名为“_method”的隐藏输入来模拟 POST 上的其他方法来解决此问题,该输入被设置为反映所需的方法:
我很困惑
我正在寻找关于为什么 Rails 将方法补丁加载为渲染形式的帖子的答案。如果您像我一样最终在这里寻找答案,这就是您正在寻找的答案:
你这样做会更好:
<%= form_for @stream do |student_form_list| %>
Run Code Online (Sandbox Code Playgroud)
resources如果您使用标准指令设置了路线,您将拥有以下路线:
在这些路线中,update路径应该是students_list_stream_path-而不是您update_students_list_stream_path现在拥有的路径。
如果您已设置form_for来使用正确的对象,它将自动设置 的路径和方法update。
| 归档时间: |
|
| 查看次数: |
6405 次 |
| 最近记录: |