I am following along in Ben Scofield’s book (Practical REST on Rails 2
Projects). As I was building the MovieList application, I ran into an
undefined method for each, which I can’t figure out how to debug (I am
new to ruby/rails).
Can someone point me in the correct direction on how to debug this
issue?
NoMethodError in MoviesController#update
undefined method `each’ for #Role:0x56ea30c
RAILS_ROOT: E:/study/rails/movielist
Application Tracehttp://localhost:3000/movies/1 | Framework
Tracehttp://localhost:3000/movies/1 | Full
Tracehttp://localhost:3000/movies/1
E:/bin/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/attribute_methods.rb:256:in
`method_missing’
app/models/movie.rb:17:in `deleted_roles=’
app/controllers/movies_controller.rb:70:in `update’
app/controllers/movies_controller.rb:69:in `update’
movies_controller.rb:
65 def update
66 @movie = Movie.find(params[:id])
67 debugger
68
69 respond_to do |format|
70 if @movie.update_attributes(params[:movie])
71 flash[:notice] = ‘Movie was successfully updated.’
72 format.html { redirect_to(@movie) }
73 format.xml { head :ok }
74 else
75 format.html { render :action => “edit” }
76 format.xml { render :xml => @movie.errors, :status =>
:unprocessable_entity }
77 end
78 end
79 end
Movies.rb:
16 def deleted_roles=(values)
17 roles.find(*values).each(&:destroy)
18 end
Role.rb:
class Role < ActiveRecord::Base
belongs_to :movie
belongs_to :person
validates_presence_of :movie_id, :person_id, :name
def to_s
[person.full_name, name].join(’ - ')
end
end