所以我有这个关于电影的数据库。我已经为我的路由文件输入了resources :movies
,这应该为它提供所需的每条路径。
这是我的电影控制器:https://github.com/Veske/form/blob/ryhm/app/controllers/movies_controller.rb
这是我尝试在whatever.com/movies/1/edit上编辑电影时遇到的错误:
Routing Error
No route matches [POST] "/movies/1/edit"
这些是电影的路线:
movies_path GET /movies(.:format) movies#index
POST /movies(.:format) movies#create
new_movie_path GET /movies/new(.:format) movies#new
edit_movie_path GET /movies/:id/edit(.:format) movies#edit
movie_path GET /movies/:id(.:format) movies#show
PATCH /movies/:id(.:format) movies#update
PUT /movies/:id(.:format) movies#update
DELETE /movies/:id(.:format) movies#destroy
现在可以清楚地看到,电影/:id / edit确实没有POST。但那是为什么呢?我输入路线的线路不应该给我吗?
编辑:
链接到电影视图:https://github.com/Veske/form/blob/ryhm/app/views/movies/edit.html.erb
答案 0 :(得分:1)
您的问题是您在编辑页面上的表单上调用了POST,这就是为什么您收到错误No route matches [POST] "/movies/1/edit"
。
如果没有看到您的代码,这只是猜测,但要么:
答案 1 :(得分:1)
您的MoviesController
需要在编辑操作中设置影片
def edit
@movie = Movie.find(params[:id])
end
或者更好的是,干掉你的代码并创建一个before_action
,为你的宁静路线设置它
before_action :set_movie, only: [:show, :edit, :update, :destroy]
def set_movie
@movie = Movie.find(params[:id])
end