While learning Rails 4, I do a little exercise, but when I try to update an object, I make a routing error. I keep getting the error message: There are no matches in the [POST] route "/ movies / 1 / edit" , but I canβt see where my code is wrong:
my movies_controller.rb
class MoviesController < ApplicationController def index @movies = Movie.all end def show @movie = Movie.find(params[:id]) end def new @movie = Movie.new end def create @movie = Movie.create(movie_params) if @movie.save redirect_to "/movies/#{@movie.id}", :notice => "Your movie was saved!" else render "new" end end def edit @movie = Movie.find(params[:id]) end def update @movie = Movie.find(params[:id]) if @movie.update_attributes(params[:movie]) redirect_to "/movies" else render "edit" end end def destroy end private def movie_params params.require(:movie).permit(:name, :genre, :year) end end
Here is my edit.html.erb
<h1>Now Editing:</h1> <h3><%= @movie.name %></h3> <%= form_for @movie.name do |f| %> <%= f.label :name %> <%= f.text_field :name %> <br> <%= f.label :genre %> <%= f.text_field :genre %> <br> <%= f.label :year %> <%= f.number_field :year %> <br> <%= f.submit "Update" %>
and routes.rb file:
MovieApp::Application.routes.draw do get "movies" => "movies#index" post "movies" => "movies#create" get "movies/new" => "movies#new" get "movies/:id" => "movies#show" get "movies/:id/edit" => "movies#edit" put "movies/:id" => "movies#update" end
last, here is the output from rake routes :
Prefix Verb URI Pattern Controller
source share