nested routes not rendering properly in link helper

hey all,

I have this:

  scope :path => '/activation', :controller => :activation do       post "create" => :create       get "confirmation" => :confirmation, :as => "confirmation"       get "send_activation_notification" => :send_activation_notification, :as => "send_activation" do       resources :users do                resources :accounts              end     end   end

After an activation is created:

def create     if acc_a_usr = @activation.perform       extract_contents acc_a_usr       send_activation_notification @user, @account       render :action => "confirmation"     else       render "new"     end   end

confirmation view loads:

= link_to "Resend Email", send_activation_path(@user, @account)

That link gets directed to this method (this method gets called in multiple places so must account for multiple situations):   def send_activation_notification(user=nil, account=nil)     user = user || params[:user]     account = account || params[:account]     CreateAccount.create_account(user, account).deliver   end

Now I look at the url generated by this helper and it's not right:


it should be: send_activation_notification/user/33/account/59 (so that I can access these ids in the params hash)

I have rea the book "The Rails 3" way and their example of doing what I want is somehting like this:

resources :actions do    resources :bids end

In my code I try to mimic something similar:

     get "send_activation_notification" => :send_activation_notification, :as => "send_activation" do       resources :users do                resources :accounts              end     end

But it doesn't work for me. Note that send_activation_notification is not a restful route, so I couldnt model my code exactly as shown in the rails book.

thanks for response

This was easy resolution:

send_activation_notification(:user_id =>, :account_id =>

That will pass the params in query string

That’s not a valid route at all. I think you might have it backwards. Check out the results of “rake routes” if you need to see what all your routes look like.

Instead of this:

get “send_activation_notification” => :send_activation_notification, :as => “send_activation” do resources :users do resources :accounts end end

You might want to do something like this:

resources :users do

get ‘send_activation_notification’, :on => :member

resources :accounts


Then you will have a send_activation_notification_user route that you can use.

thanks for response, the solution I provided also works if you want to pass params in hash via query string when there isn't a direct association between multiple models