2

我正在尝试将数据发布到某个controller#action对,但我的应用程序将我重定向到 POST(但不是 GET),我不知道为什么。

我用一种方法构建了一个简单的控制器:

class NavigationsController < ApplicationController
    def foo
        render :text => 'in foo'
    end
end

我的路由文件只有一条规则:

map.connect ':controller/:action/:id'

不过,这是我 GET 和 POST 时的结果:

$ curl http://localhost:3000/navigations/foo/1
in foo
$ curl -d 'a=b' http://localhost:3000/navigations/foo/1
<html><body>You are being <a href="http://localhost:3000/">redirected</a>.</body></html>

规格:rails 2.3.8,ruby 1.8.7

4

1 回答 1

2

关掉protect_from_forgery

对于所有控制器

在 ApplicationController 中注释掉(或删除)protect_from_forgery

class ApplicationController < ActionController::Base
    #protect_from_forgery # See ActionController::RequestForgeryProtection for details
    # ...
end

对于一个或多个控制器

添加skip_before_filter :verify_authenticity_token到控制器声明。

class NavsController < ApplicationController
    skip_before_filter :verify_authenticity_token
    # ...
end

对于一项或多项操作

:except为上述skip_before_filterprotect_from_forgery命令添加一个选项。

class MyController < ApplicationController
    protect_from_forgery :except => :index
end

class MyOtherController < ApplicationController
    skip_before_filter :verify_authenticity_token, :except => [:create]
end
于 2012-12-13T18:01:12.420 回答