I''m basing feeds/show.rhtml and feeds_controller.rb on Chapter 12 - More Model Magic Ruby on Rails For Dummies by Barry Burd John Wiley & Sons © 2007 specifically listings 12-12 and 12-14. Of course, it''s now deprecated :( There''s a has_many_through between the "feeds" and "tags" tables. The join table is "colors", for lack of a better name. I believe that the name of the join table and that it''s a has_many_through are causing the error message. I have a screen shot at http://code.google.com/p/strawr/ , just click on the add_a_tag.png. Up to that point, everything works. However, when I click on the button I get the following error: NoMethodError in FeedsController#add_some_tags undefined method `push_with_attributes'' for Tag:Class RAILS_ROOT: ./script/../config/.. Application Trace | Framework Trace | Full Trace /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ base.rb:1238:in `method_missing'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ associations/has_many_through_association.rb:120:in `send'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ associations/has_many_through_association.rb:120:in `method_missing'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ base.rb:946:in `with_scope'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ associations/has_many_through_association.rb:120:in `method_missing'' /home/thufir/Desktop/strawr/app/controllers/feeds_controller.rb:88:in `add_some_tags'' /home/thufir/Desktop/strawr/app/controllers/feeds_controller.rb:87:in `each'' /home/thufir/Desktop/strawr/app/controllers/feeds_controller.rb:87:in `add_some_tags'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ base.rb:1238:in `method_missing'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ associations/has_many_through_association.rb:120:in `send'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ associations/has_many_through_association.rb:120:in `method_missing'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ base.rb:946:in `with_scope'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ associations/has_many_through_association.rb:120:in `method_missing'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ base.rb:1101:in `send'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ base.rb:1101:in `perform_action_without_filters'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ filters.rb:696:in `call_filters'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ filters.rb:688:in `perform_action_without_benchmark'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ benchmarking.rb:66:in `perform_action_without_rescue'' /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ benchmarking.rb:66:in `perform_action_without_rescue'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ rescue.rb:83:in `perform_action'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ base.rb:435:in `send'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ base.rb:435:in `process_without_filters'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ filters.rb:684:in `process_without_session_management_support'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ session_management.rb:114:in `process'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ base.rb:334:in `process'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/dispatcher.rb:41:in `dispatch'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/webrick_server.rb:113:in `handle_dispatch'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/webrick_server.rb:79:in `service'' /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'' /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'' /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'' /usr/lib/ruby/1.8/webrick/server.rb:162:in `start'' /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'' /usr/lib/ruby/1.8/webrick/server.rb:95:in `start'' /usr/lib/ruby/1.8/webrick/server.rb:92:in `each'' /usr/lib/ruby/1.8/webrick/server.rb:92:in `start'' /usr/lib/ruby/1.8/webrick/server.rb:23:in `start'' /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/webrick_server.rb:63:in `dispatch'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/commands/servers/webrick.rb:59 /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'' /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/ dependencies.rb:495:in `require'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/ dependencies.rb:342:in `new_constants_in'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/ dependencies.rb:495:in `require'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/commands/server.rb:39 /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'' /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'' script/server:3 /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ base.rb:1238:in `method_missing'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ associations/has_many_through_association.rb:120:in `send'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ associations/has_many_through_association.rb:120:in `method_missing'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ base.rb:946:in `with_scope'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ associations/has_many_through_association.rb:120:in `method_missing'' /home/thufir/Desktop/strawr/app/controllers/feeds_controller.rb:88:in `add_some_tags'' /home/thufir/Desktop/strawr/app/controllers/feeds_controller.rb:87:in `each'' /home/thufir/Desktop/strawr/app/controllers/feeds_controller.rb:87:in `add_some_tags'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ base.rb:1101:in `send'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ base.rb:1101:in `perform_action_without_filters'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ filters.rb:696:in `call_filters'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ filters.rb:688:in `perform_action_without_benchmark'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ benchmarking.rb:66:in `perform_action_without_rescue'' /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ benchmarking.rb:66:in `perform_action_without_rescue'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ rescue.rb:83:in `perform_action'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ base.rb:435:in `send'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ base.rb:435:in `process_without_filters'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ filters.rb:684:in `process_without_session_management_support'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ session_management.rb:114:in `process'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/ base.rb:334:in `process'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/dispatcher.rb:41:in `dispatch'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/webrick_server.rb:113:in `handle_dispatch'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/webrick_server.rb:79:in `service'' /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'' /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'' /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'' /usr/lib/ruby/1.8/webrick/server.rb:162:in `start'' /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'' /usr/lib/ruby/1.8/webrick/server.rb:95:in `start'' /usr/lib/ruby/1.8/webrick/server.rb:92:in `each'' /usr/lib/ruby/1.8/webrick/server.rb:92:in `start'' /usr/lib/ruby/1.8/webrick/server.rb:23:in `start'' /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/webrick_server.rb:63:in `dispatch'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/commands/servers/webrick.rb:59 /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'' /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/ dependencies.rb:495:in `require'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/ dependencies.rb:342:in `new_constants_in'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/ dependencies.rb:495:in `require'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/commands/server.rb:39 /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'' /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'' script/server:3 Request Parameters: {"tag1"=>{"checked"=>"0"}, "commit"=>"Save changes", "tag2"=> {"checked"=>"0"}, "tag3"=>{"checked"=>"1"}, "id"=>"4"} Show session dump --- flash: !map:ActionController::Flash::FlashHash {} Response Headers: {"cookie"=>[], "Cache-Control"=>"no-cache"} The relevant code: thufir@arrakis ~/Desktop/strawr $ thufir@arrakis ~/Desktop/strawr $ cat app/controllers/feeds_controller.rb class FeedsController < ApplicationController def index list render :action => ''list'' end # GETs should be safe (see http://www.w3.org/2001/tag/doc/ whenToUseGet.html) verify :method => :post, :only => [ :destroy, :create, :update ], :redirect_to => { :action => :list } def list @feed_pages, @feeds = paginate :feeds, :per_page => 10 end def show @feed = Feed.find(params[:id]) end def new @feed = Feed.new @tag = Tag.find_all end def create @feed = Feed.new(params[:feed]) if @feed.save flash[:notice] = ''Feed was successfully created.'' redirect_to :action => ''list'' else render :action => ''new'' end end def edit @feed = Feed.find(params[:id]) @tag = Tag.find_all end def update @feed = Feed.find(params[:id]) if @feed.update_attributes(params[:feed]) flash[:notice] = ''Feed was successfully updated.'' redirect_to :action => ''show'', :id => @feed else render :action => ''edit'' end end def destroy Feed.find(params[:id]).destroy redirect_to :action => ''list'' end #courtesy of Listing 12-12 #of Ruby on Rails For Dummies def remove_tag @feed = Feed.find(params[:id]) @feed.tags.delete( Tag.find(params[:which_tag])) if @feed.save flash[:notice] = ''Tag has been removed.'' end redirect_to :action => ''show'', :id => @feed end def add_tag @feed = Feed.find(params[:id]) @feed.tags.push_with_attributes( Tag.find(params[:tag][:id])) if @feed.save flash[:notice] = ''Tag has been added!'' end redirect_to :action => ''show'', :id => params[:id] end def add_some_tags @feed = Feed.find(params[:id]) @unused_tags Tag.find(:all) - @feed.tags if @unused_tags.any? @tags_to_add = @unused_tags.select { |tag| (@params[''tag''+tag.id.to_s][''checked''] == ''1'')} @tags_to_add.each { |tag| @feed.tags.push_with_attributes(tag)} end if @tags_to_add.any? and @feed.save flash[:notice] = ''Tags have been added!'' end redirect_to :action => ''show'', :id => @feed end end thufir@arrakis ~/Desktop/strawr $ thufir@arrakis ~/Desktop/strawr $ cat app/views/feeds/show.rhtml <% for column in Feed.content_columns %> <p> <b><%= column.human_name %>:</b> <%=h @feed.send(column.name) %> </p> <% end %> <%= link_to ''Edit'', :action => ''edit'', :id => @feed %> | <%= link_to ''Back'', :action => ''list'' %> <% for column in Feed.content_columns %> <p> <b><%= column.human_name %>:</b> <%=h @feed.send(column.name) %> </p> <% end %> <b>Tags:</b><br> <% if @feed.tags.empty? %> (None)<p> <% else %> <% for tag in @feed.tags %> <%= tag.name %> <%= link_to ''Remove'', { :action => ''remove_tag'', :id => @feed, :which_tag => tag.id }, :confirm => ''Are you sure?'', :post => true %> <br /> <% end %> <% end %> <% @unused_tags Tag.find(:all) - @feed.tags %> <% if @unused_tags.any? %> <%= form_tag :action => "add_some_tags", :id => @feed %> <b>Add a tag:</b><br> <% @unused_tags.each {|tag| %> <%= check_box(''tag''+tag.id.to_s, ''checked'') + tag.tag %><br/> <% } %> <%= submit_tag %> <%= end_form_tag %> <% end %><p> <%= link_to ''Edit'', :action => ''edit'', :id => @feed %> | <%= link_to ''Back'', :action => ''list'' %> thufir@arrakis ~/Desktop/strawr $ thanks, Thufir --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---