2010-07-12 7 views
0

Je suis nouveau à RoR et je ne peux pas obtenir un de mes rotes au travail, pas sûr que se passe-t-il? J'ai défini un itinéraire dans mon fichier routes.rb, somthing comme ça ...Rails contrôleur/question de routage

map.connect 'myurl/:someid/:start/:limit', :conditions => { :method => :get }, :controller => 'mycontroller', :action => 'get_data_list' 


# method defintion in mycontroller 
def get_data_list (someid, start, limit) 
    render :text => "Blah" 
end 

Et je suis en utilisant ce qui suit l'URL pour invoquer la route ci-dessus et il ne fonctionne pas? Une idée? http://host:port/myurl/24/1/10

Il provoque l'erreur suivante. Il semble qu'il a atteint l'action du contrôleur, mais échoue après cela?

Traitement myController # get_data_list (pour 127.0.0.1 à 2010-07-12 19:07:45) [GET] Paramètres: { "start" => "1", "limite" => "10", "someid" => "24"}

ArgumentError (mauvais nombre d'arguments (0 pour 3)):

Répondre

2

C'est ce que vous voulez:

map.connect 'myurl/:someid/:start/:limit', :conditions => { :method => :get }, :controller => 'mycontroller', :action => 'get_data_list' 


# method defintion in mycontroller 
def get_data_list 
    someid = params[:someid] 
    start = params[:start] 
    limit = params[:limit] 

    render :text => "Blah" 
end 
+0

merci :) i m java/php-type CodeIgniter et dans ce monde le chemin params sont convertis en params méthode. Je pense que RoR est différent. Merci beaucoup. – kapso

+0

De rien! :) –

2

Vous n'avez pas besoin (someid, commencer, limite) partie de la méthode dans votre contrôleur. Ces variables sont des accesss par params [: someid], basé sur votre route. ArgumentError est dû au fait que la méthode du contrôleur attend des variables qui ne lui sont pas transmises.