Ruby on Rails Ajax 不成功

今天使用Ruby on Rails 去做AJAX 的呼叫

AJAX的Javascript那裡只是一個簡單的json轉值呼叫而已

$.post('/website_setting/step05', { json: json_string },
function(data){
alert(data);
}
);

但試了好久一直沒有成功!

後來檢查了幾個地方:

1. AJAX 路徑是否正確

2. ROR的 route 是否有設定

後來我透過Ruby on Rails的 development.log 去除錯,

看到了這段

Started POST “/website_setting/step05” for 127.0.0.1 at 2013-09-07 02:14:22 +0800
Processing by WebsiteSettingController#step05_update as */*
Parameters: {“json”=>”{\”0\”:\”關於我們\”}”}
Can’t verify CSRF token authenticity
Completed 422 Unprocessable Entity in 1ms

發現剛剛的1,2都是正確的

問題出在 “Can’t verify CSRF token authenticity”

後來找了資料後發現只要加上這段就可以了

$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}
});

還有要注意到在layout裡面要有這段語法   <%= csrf_meta_tags %>

這樣,上面那段js語法才可以取到值