2010-12-05 50 views
0

我有一個控制器GET VS POST在軌

class PageController < ApplicationController 
    def home 

     print "Custom " + params 
    end 

end 

當我通過把請求GET它的工作(則params的印刷值),但對於POST它不工作 我得到的錯誤的ActionController :: InvalidAuthenticityToken(ActionController的:: InvalidAuthenticityToken):

我的config/routes.rb中是

PostTest::Application.routes.draw do 
    root :to => "page#home" 
end 

我的目標是從帖子請求中提取關鍵字和值,有什麼幫助嗎?

+0

這是鐵軌3嗎? – Cory 2010-12-05 21:50:41

回答

2

首先,請確保protect_from_forgery行註釋掉在controllers/application_controller.rb

然後確保您的POST請求正在傳輸protect_from_forgery行中定義的真實性標記。導軌form_tag幫手會自動爲你做這個。如果你不希望使用form_tag您可以手動生成的真實性標籤是這樣的:

tag(:input, :type => "hidden", 
    :name => request_forgery_protection_token.to_s, 
    :value => form_authenticity_token) 

如果這不起作用,請張貼代碼正在發送POST請求的形式。

0

如果回答我上面的問題==「是」 - 嘗試折騰<%= csrf_meta_tag%>到您的網頁和/或佈局...

+0

我正在使用rails 3。解決方案<%= csrf_meta_tag%>不起作用 – 2010-12-05 22:09:29

+0

是的 - 對我來說有點侵略性 - 這主要是因爲我相信不引人注意的JavaScript。如果您在表單構造中使用了form_for,您應該可以免費獲得身份驗證令牌...... – Cory 2010-12-05 22:12:33