but something weird happened to me while trying to test a controller inside one of the modules, to see what happened i represent my case here by an example
i added in routes file this snippet of code
 map.resources :items do |item|
   item.resource :rate, :controller => 'ItemActions::Rate'
 end
and in my controllers folder, made a folder called 'item_actions' and added inside it a file called 'rate_controller.rb', inside this file i wrote
  module ItemActions
    class RateController < ApplicationController
      ...
    end
  end
restarted the server and run my work, everything fine and i can call the controller actions as any other controller
then i opened the controller test file and inside one of its test functions, i added this code
  post :create, {:item_id => 1, :rating => 50}
i got that error
 No route to match {:controller => 'item_actions/rate', :action => 'create', :item_id => 1}
i changed the controller to be
  class ItemActions::RateController < ApplicationController
    ...
  end
but nothing changed, i am still getting that error once again, searching for a long time, i reached to a working solution which was to open routes file and change it to
 map.resources :items do |item|
   item.resource :rate, :controller => 'item_actions/rate'
 end
That's it, it worked and i didn't get the error once again
 
No comments:
Post a Comment