路由错误没有路由匹配[POST]“/ movies / 9 / edit”

时间:2012-05-15 04:26:17

标签: ruby-on-rails

您好我正在关注rails教程,我正在使用rails 3.2.3并且我有此错误路由错误

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

这是我的haml页面:

%h2编辑电影

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

= label:movie,:title,'Title'   = text_field:movie,'title'

= label:movie,:rating,'Rating'   = select:movie,:rating,['G','PG','PG-13','R','NC-17']

= label:movie,:release_date,'Released On'   = date_select:movie,:release_date

= submit_tag'保存更改'

这是我的控制器:

def edit

@movie = Movie.find params[:id]

def update

@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)movies#edit

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

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

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

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

教程可能会让你误入歧途。

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

你真的想PUT到正常的电影路径。 update动词暗示PUT

而不是:

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

尝试:

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

的确,您可能希望找到不同的教程。

答案 1 :(得分:0)

嗯,你试图发布(放置)你的路线文件中的编辑动作是用get定义的(完全按照它应该的编辑动作的方式)

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