J
Joshua Ball
I am following along in Ben Scofield's book (Practical REST on Rails 2 Proj=
ects). 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/r=
ails).
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 Trace<http://localhost:3000/movies/1> | Framework Trace<http://=
localhost:3000/movies/1> | Full Trace<http://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=3D'
app/controllers/movies_controller.rb:70:in `update'
app/controllers/movies_controller.rb:69:in `update'
movies_controller.rb:
65 def update
66 @movie =3D Movie.find(params[:id])
67 debugger
68
69 respond_to do |format|
70 if @movie.update_attributes(params[:movie])
71 flash[:notice] =3D 'Movie was successfully updated.'
72 format.html { redirect_to(@movie) }
73 format.xml { head k }
74 else
75 format.html { render :action =3D> "edit" }
76 format.xml { render :xml =3D> @movie.errors, :status =3D> :unpro=
cessable_entity }
77 end
78 end
79 end
Movies.rb:
16 def deleted_roles=3D(values)
17 roles.find(*values).each(&:destroy)
18 end
Role.rb:
class Role < ActiveRecord::Base
belongs_to :movie
belongs_to erson
validates_presence_of :movie_id, erson_id, :name
def to_s
[person.full_name, name].join(' - ')
end
end
ects). 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/r=
ails).
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 Trace<http://localhost:3000/movies/1> | Framework Trace<http://=
localhost:3000/movies/1> | Full Trace<http://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=3D'
app/controllers/movies_controller.rb:70:in `update'
app/controllers/movies_controller.rb:69:in `update'
movies_controller.rb:
65 def update
66 @movie =3D Movie.find(params[:id])
67 debugger
68
69 respond_to do |format|
70 if @movie.update_attributes(params[:movie])
71 flash[:notice] =3D 'Movie was successfully updated.'
72 format.html { redirect_to(@movie) }
73 format.xml { head k }
74 else
75 format.html { render :action =3D> "edit" }
76 format.xml { render :xml =3D> @movie.errors, :status =3D> :unpro=
cessable_entity }
77 end
78 end
79 end
Movies.rb:
16 def deleted_roles=3D(values)
17 roles.find(*values).each(&:destroy)
18 end
Role.rb:
class Role < ActiveRecord::Base
belongs_to :movie
belongs_to erson
validates_presence_of :movie_id, erson_id, :name
def to_s
[person.full_name, name].join(' - ')
end
end