2011-01-09 48 views
1

我正在爲後端Flash應用使用rails。我需要使用post從閃存中發送一堆params。我在我的users_controller一軌的動作稱爲登記在rails 3路由中指定POST並從Flash中調用

我的路線文件看起來像這樣

resources :users 

    match 'register' => 'Users#register', :via => :post 

的動作看起來像這樣

var vars:URLVariables = new URLVariables(); 
vars.first_name = "First"; 
vars.last_name = "Last"; 
vars.address = "555 Mysteet Rd."; 
vars.email = "[email protected]"; 
vars.city = "The Hill"; 
vars.provice = "KY"; 
vars.postal_code = "55555"; 

var request : URLRequest = new URLRequest("/register"); 
request.method = URLRequestMethod.POST; 
request.data = vars; 

var loader : URLLoader = new URLLoader(); 
loader.dataFormat = URLLoaderDataFormat.TEXT; 
loader.addEventListener(Event.COMPLETE, registerHandler); 
loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); 
loader.load(request); 

我在Flash中得到的錯誤是IO_ERROR串流事件通常表明您所呼叫的URL不存在。如果我將request.method更改爲GET,那麼調用將起作用,但並非所有數據都會發送到rails,因爲GET無法處理正在發送的數據的長度。

+0

對於調試,看看究竟是什麼從Flash發佈,可以發送回的響應(也如果它是一個錯誤頁面,可能與調試信息),我推薦http://www.charlesproxy.com – 2011-01-09 22:45:28

回答

4

你的控制器和動作是什麼樣的?

對於API類型調用,例如從Flash/Flash到Rails,我不使用自定義路由。相反,我依靠RESTful行動。於是我打電話:

/用戶/製作/

既然你宣佈你的資源:在你的路由的用戶,你應該在這個地方路由(假設你有一個RESTful創建動作)。

給我的細節,我會盡力幫助更多。

[編輯]從馬特

更多細節經由IM:

  • 控制器是用戶和動作被註冊
  • POST成功Rails中接收到的,但引發錯誤

    ActionController :: InvalidAuthenticityToken

對於安全性Rails 3添加了一個帶有令牌的隱藏表單域,這個令牌與任何POST到Rails控制器相關。因爲這個POST是從Flash發生的,所以這個標記顯然不存在,我們得到這個錯誤。

要解決此問題,禁用真實性檢查與控制器:

skip_before_filter :verify_authenticity_token 
+0

完全做到了這一招,並再次感謝與我一起跳上IM聊天。 – mattwallace 2011-01-09 22:50:40