2010-07-12 95 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是因为控制器方法期望未传递给它的变量。