I have a controller for a product, and I want the actions to reflect the different models which are numbers. Simply using a number for the action name doesn''t seem to work: class ClickController < ApplicationController def index end def 100 end def 200 end end I also have this named route in my routes file: map.click ''/products/click/:action'', :controller => ''click'' If I have a non-numeric value for action, this works fine. I use it for a different product ("command_path(:datacollector))"--which properly generates "/products/command/datacollector"). In Rails 1.2.x I was able to prepend the numeric action name with an underscore (i.e., _100, _200, etc.) and everything worked as expected. In Rails 2.0 this no longer works. Someone suggested I create a custom route: map.click ''/products/click/:model'', :controller => ''click'', :action => ''dispatch'', :requirements => {:model => /\d{3}/}, :model => nil I have a dispatch action in my controller: def dispatch(model = nil) if model.nil? index render(:action => ''index'') else # whatever end end The else statement NEVER executes. I have tried the following paths: /products/click /products/click/100 /products/click/200 Every path renders the index action. What am I missing? What can I do? Thanks. --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 17 Jan 2008, at 01:07, partydrone wrote:> > I have a controller for a product, and I want the actions to reflect > the different models which are numbers. Simply using a number for the > action name doesn''t seem to work: >actions are methods, method names can''t start with a digi.> I also have this named route in my routes file: > > map.click ''/products/click/:action'', :controller => ''click'' > > If I have a non-numeric value for action, this works fine. I use it > for a different product ("command_path(:datacollector))"--which > properly generates "/products/command/datacollector"). In Rails 1.2.x > I was able to prepend the numeric action name with an underscore > (i.e., _100, _200, etc.) and everything worked as expected. In Rails > 2.0 this no longer works. Someone suggested I create a custom route: > > map.click ''/products/click/:model'', :controller => ''click'', :action => > ''dispatch'', :requirements => {:model => /\d{3}/}, :model => nil >Do you need the :model => nil ?> I have a dispatch action in my controller: > > def dispatch(model = nil) > if model.nil? > index > render(:action => ''index'') > else > # whatever > end > end > > The else statement NEVER executes. I have tried the following paths: > > /products/click > /products/click/100 > /products/click/200 >model should materialize as params[:model], not as an argument to your dispatch method. Fred> Every path renders the index action. > > What am I missing? What can I do? > > Thanks. > >--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
"model should materialize as params[:model], not as an argument to your dispatch method." Silly me. That was my mistake. Thanks. --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Next question is how do I dynamically execute an action? Here''s what I mean: I have my dispatch action. If :model is nil, I execute then render the index action: def dispatch if params[:model].nil? index render(:action => ''index'') else action = "click_#{params[:model]}" # execute action render(:action => action) end end At the moment, I''m setting some variables in my action that aren''t available in my view. How do I get them there? Thanks. --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 17 Jan 2008, at 01:46, partydrone wrote:> > Next question is how do I dynamically execute an action? Here''s what I > mean: I have my dispatch action. If :model is nil, I execute then > render the index action: > > def dispatch > if params[:model].nil? > index > render(:action => ''index'') > else > action = "click_#{params[:model]}" > # execute action > render(:action => action) > end > end >You just need to call the method (eg via send) Fred> At the moment, I''m setting some variables in my action that aren''t > available in my view. How do I get them there? > > Thanks. > >--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---