views:

33

answers:

1

I have successfully set up this plugin before so I am curious as to what I am doing wrong here. I have built the ability for users to add tags to questions. I am not using tagging plugin here but that shouldn't matter for this.

With respect to the auto complete, I am trying to have the form located in the /views/questions/show.html.erb file access the Tags table and display entries in the tags.tags_name column.

When I begin to type in the field I get the following error message:

Processing QuestionsController#show (for 127.0.0.1 at 2010-05-31 15:22:20) [GET]
  Parameters: {"tag"=>{"tag_name"=>"a"}, "id"=>"auto_complete_for_tag_tag_name"}
  Question Load (0.1ms)   SELECT * FROM "questions" WHERE ("questions"."id" = 0) 

ActiveRecord::RecordNotFound (Couldn't find Question with ID=auto_complete_for_tag_tag_name):
  app/controllers/application_controller.rb:15:in `init_data'

For some reason I am actually passing the field name as the Question.id.

The plugin set up is fairly simple as you add the following line to your controller:

auto_complete_for :tag, :tag_name

and the following line in your routes.rb file:

map.resources :tags, :collection => {:auto_complete_for_tag_tag_name => :get }

I have added the controller line to both my tags and questions controller and also mapped resources for both tags and questions in my routes.rb file:

map.resources :tags, :collection => {:auto_complete_for_tag_tag_name => :get }
map.resources :questions, :collection => {:auto_complete_for_tag_tag_name => :get }

I have played around with removing either or of the above but can't seem to fix it. Any ideas what I am doing wrong here?

UPDATE:

My QuestionsController#show action is fishing posts by:

@question = Question.find(params[:id])
A: 

Found the answer. Crazy. You just have to add this to your routes.rb file:

map.auto_complete ':controller/:action',
     :requirements => { :action => /auto_complete_for_\S+/ },
     :conditions => { :method => :get }

Here is where I found it.

bgadoci