我有以下路线
namespace :dashboard do
get '/courses/:id/edit' => 'courses#edit', :as => :edit_course
put 'courses/:id/update' => 'courses#update'
end
以及表格
= form_tag dashboard_edit_course_url( @course), :method => 'post', :multipart => true do
...
操作:
<form accept-charset="UTF-8" action="http://localhost:3000/dashboard/courses/54633b9fc14ddd104c004de3/edit" enctype="multipart/form-data" method="post">
但是当我提交表单时,我收到了这个错误:
您要查找的页面不存在。
您可能输错了地址或页面可能已移动。
我不明白为什么?有人可以解释一下吗?
答案 0 :(得分:2)
另一种处理此问题的方法。在你的路线写道:
namespace :dashboard
resources :courses, only: [:edit, :update]
end
在你看来写:
= form_tag [:dashboard, @course], multipart: true do |f|
然后你将使用rails默认值。
答案 1 :(得分:1)
您的表单声明使用post
,但您没有配置post route
。
执行此操作的方法是通过put
将表单提交到更新路径,因为您是updating a record:
= form_tag dashboard_update_course_path( @course), :method => 'put', :multipart => true do
此外,您可能想要use path
instead of url
。
然后只需命名update route
:
namespace :dashboard do
get '/courses/:id/edit' => 'courses#edit', :as => :edit_course
put '/courses/:id/update' => 'courses#update', :as => :update_course
end
答案 2 :(得分:0)