2

您好,我正在关注 rails 教程,我使用的是 rails 3.2.3,并且出现此错误 Routing Error

没有路线匹配 [POST] "/movies/9/edit"

这是我的haml页面:

%h2 编辑电影

= form_tag edit_movie_path(@movie), :method => :put do

= 标签:电影,:标题,'标题' = text_field:电影,'标题'

= 标签 :movie, :rating, 'Rating' = 选择 :movie, :rating, ['G','PG','PG-13','R','NC-17']

= 标签 :movie, :release_date, '发布日期' = date_select :movie, :release_date

= submit_tag '保存更改'

这是我的控制器:

定义编辑

@movie = Movie.find params[:id]

结尾

定义更新

@movie = Movie.find params[:id]
@movie.update_attributes!(params[:movie])
flash[:notice] = "#{@movie.title} was successfully updated."
redirect_to movie_path(@movie)

结尾

和我的路线:

电影 GET /movies(.:format) 电影#index

       POST   /movies(.:format)          movies#create

new_movie GET /movies/new(.:format) 电影#new edit_movie GET /movies/:id/edit(.:format) 电影#edit

 movie GET    /movies/:id(.:format)      movies#show

       PUT    /movies/:id(.:format)      movies#update

       DELETE /movies/:id(.:format)      movies#destroy

谢谢您的帮助

4

2 回答 2

2

本教程可能会让您误入歧途。

它告诉您将表单PUT放入编辑路径。

你真的很想走PUT正常的电影路径。动词update暗含an 。PUT

代替:

= form_tag edit_movie_path(@movie), :method => :put do

尝试:

= form_tag movie_path(@movie), :method => :put do

事实上,您可能想找到一个不同的教程。

于 2012-05-15T04:33:34.993 回答
0

好吧,您正在尝试发布(放置)在您的路线文件中使用 get 定义的编辑操作(正是它应该是的编辑操作方式)

以标准方式,您希望发布到您的创建或更新路径,但如果您想发送表单进行编辑,请使用方法 get 或更改您的编辑操作路线以接受 put

于 2012-05-15T04:41:39.023 回答