轨道上的错误路由和重定向循环

时间:2014-03-03 12:45:05

标签: ruby-on-rails

我是关于rails的新手,但我设法创建了一个从表单中获取值的应用程序,使用javascript进行一些计算并创建一个像

这样的字符串
127.0.0.1:3000/var1/var2/var3/var4

然后重定向到该网址。

现在,我想获取这些变量并在服务器端执行另一个计算,然后将结果存储在数据库中。

现在,我有这样的route.rb

root "mcc#form"
get "process/:var1/:var2/:var3/:var4" => "mcc#process"

和我的控制器mcc_controller.rb一样

class MccController < ApplicationController
    def form
    end

    def process
        #redirect_to "127.0.0.1:3000/", :status => 302
    end
end

现在,如果像这样的话,我会收到错误

wrong number of arguments calling `process` (1 for 0)

即使我要求127.0.0.1/(这应该给我form.html.erb视图),如果我在routes.rb上注释第二行,我仍然会收到该错误。

进行另一项实验,我评论了&#34;过程&#34;在mcc_controller.rb上的方法,并让routes.rb上的第二行没有注释,一切正常,但显然,对127.0.0.1:3000/var1/var2/var3/var4的调用不再有效。

在&#34;过程&#34;方法我有一个重定向,应该返回主页面进行另一次计算。然后我写了我的&#34;过程&#34;方法如下

class ArenaController < ApplicationController
    def form
    end

    def process(var)
        redirect_to "127.0.0.1:3000/", :status => 302
    end
end

我得到一个&#34;重定向循环&#34;即使我去了127.0.0.1。

所以,我不明白为什么会这样。 &#34;处理&#34;只有在我要求127.0.0.1/var1/var2/var3/var4时才应该调用方法,而不是在我要求根路由时调用。

我希望我很清楚。

1 个答案:

答案 0 :(得分:0)

我解决了错误的路由和循环问题。似乎“进程”是某种保留字,所以我将其改为“qrocess”,现在它可以工作了。最好的部分是网址是一样的! 另外,在

class ArenaController < ApplicationController
    def form
    end

    def process(var)
        redirect_to "127.0.0.1:3000/", :status => 302
    end
end

我使用process(var)来避免“错误的参数数量”,但现在似乎没有必要。