2010-07-12 94 views
0

我是新來的RoR,我不能讓我的一個rotes工作,不知道發生了什麼事情?我已經定義在我的routes.rb文件的路徑,財產以後這樣的...Rails控制器/路由問題

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 

,我使用下面的鏈接直接調用上面的路線,這是行不通的?任何線索? http://host:port/myurl/24/1/10

它給出了以下錯誤。看起來它已經達到了控制器的動作,但之後失敗了?

處理#myController的get_data_list (在19點07分45秒2010-07-12 127.0.0.1) [GET]參數:{ 「開始」=> 「1」, 「限制」=> 「10」, 「someid」=> 「24」}

引發ArgumentError(錯誤的參數數目(0 3)):

回答

2

這是你想要什麼:

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

謝謝:)讀音字的Java/PHP的笨傢伙 - 在那個世界的路徑參數被翻譯成方法PARAMS。我猜RoR是不同的。非常感謝。 – kapso 2010-07-13 02:16:05

+0

不客氣! :) – 2010-07-13 02:21:20

2

你不需要的(someid,啓動,限)在你的控制器中的方法的一部分。這些變量是由params [:someid]根據你的路線訪問的。 ArgumentError是因爲控制器方法期望未傳遞給它的變量。