您好我正在关注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
感谢您的帮助
答案 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定义的(完全按照它应该的编辑动作的方式)
以标准方式,您希望发布到创建或更新路径,但如果要发送表单进行编辑,请使用方法获取或更改您的路线以使编辑操作接受放置