我是关于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时才应该调用方法,而不是在我要求根路由时调用。
我希望我很清楚。
答案 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)来避免“错误的参数数量”,但现在似乎没有必要。