2

こんにちは、Rails チュートリアルに従っています。Rails 3.2.3 を使用していますが、Routing Error というエラーが発生します。

[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 '変更を保存'

これが私のコントローラーです:

デフォルト編集

@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通常の映画の道に行きたいです。anupdatePUT動詞によって暗示されます。

それ以外の:

= 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 に答える