2011-10-10 69 views
1

这里耙路线是输出耙路线的URL之一与多个参数

bug_info /bugs/:pr/:scope/info(.:format)  {:controller=>"bugs", :action=>"info"} 

里面的erb视图如果我打电话bug_info_path(:PR => 1,:范围=> 2),该视图给我一个错误说

没有路由匹配{:范围=> “2”,:动作=> “信息”,:控制器=> “错误”, :PR => “1”}

我在做什么错在这里

match 'bugs/:pr/:scope/info' => 'bugs#info', :as=>:bug_info 
+0

尝试重命名:范围,只是猜测它可能会碰到一些铁轨参数 –

+0

确保BugsController有一个信息实例方法? –

+0

我把它命名为“abcdef”,仍然有相同的错误 – kiran

回答

1

非常奇怪。我通过生成一个新的rails应用程序进行测试,并填充你的东西,它似乎工作正常。这是我得到的。 (这是Rails 3.0.7)。

配置/ route.rb

Railstest::Application.routes.draw do 
    match 'test' => 'bugs#test', :as=>:bug_test 
    match 'bugs/:pr/:scope/info' => 'bugs#info', :as=>:bug_info 
end 

应用程序/控制器/ bugs_controller.rb

class BugsController < ApplicationController 
    def test 
    end 

    def info 
    end 
end 

应用/视图/错误/ test.erb

<%= bug_info_path(:pr=>1,:scope=>2) %> 

应用/视图/ bug/info.erb

<%= params %> 

当我浏览/test我得到这样的:

/错误/ 1/2 /信息

当我浏览到/bugs/1/2/info

{ “控制器”=>” bug“,”action“=>”info“,”pr“=>”1“,”scope“=>”2“}

Maybe you co您也可以尝试使用最少的Rails应用程序,然后添加内容直到我休息。

+0

我打算用最小的应用程序来测试它,并测试它 – kiran

+0

不,还是一样的错误。我正在运行rails 3.1。然而,而不是:pr /:范围,如果我提供* pr/*范围,那么它的运行良好没有任何错误 – kiran

+1

我明白了。在我的例子中,我使用了像/bugs/1/1.1/info这样的点的动态段。所以它失败了。我添加了一个约束范围接受点,它的工作 – kiran