2014-02-10 39 views
0

我試圖做用ajax簡單的電話後,表格中有一個語言標識,一個國際化的關鍵,和一個字符串翻譯值之後,控制器。價值沒有得到通過POST請求

我有我的路線設置如下:

post '/translate/' => 'pages#translate' 

出於測試目的,在PagesController::translate我只是呼籲:

render json: params 

在我的咖啡腳本我使用下面的代碼:

console.log $form.serialize() 
$.post $form.attr('action'), $form.serialize(), 
    (json) -> 
     console.log json 
     return 
, 'json' 

而我使用下面的HAML來輸出表格:

%div#translation-control 
    = form_tag '/translate/', :method => "post" do 
     = hidden_field_tag :translationlang, I18n.locale 
     = select_tag :translationkey, options_for_select(get_all_translations().invert()) 
     = text_area_tag(:translationvalue, '', :rows => '1') 
     = button_tag "Add" 

在我的日誌我看到:

translationlang=en&translationkey=home.welcome&translationvalue=Welcome+to+this+site 
Object { 
    action: "translate" 
    controller: "pages" 
    translationlang: "en" 
} 

我試圖建立我的路線,其中包括幾種不同的方法:

post '/translate/:translationlang/:translationkey/:translationvalue' => 'pages#translate' 

match '/translate/:translationlang/:translationkey/:translationvalue' => 'pages#translate', 
:constraints => { :translationkey => /[\w\_\-\.]+/, :translationvalue => /.*/ }, 
via: [:post] 

但似乎沒有任何工作。爲什麼translationkeytranslationvalue沒有傳遞給控制器​​?

回答

0

正想寫一個評論,但會更清楚:


.to_json

你試過.to_jsonThis answer似乎是很容易接受的想法:

render json: params.to_json 

如果做不到這一點,你有沒有考慮只是測試靜態文本:

render "hello".to_json ? 

控制器

你確定是否將正確的數據/參數發送給您的控制器?一些好的反饋將是你的請求日誌

+0

謝謝,我看了看請求和參數沒有得到通過,jQuery似乎搞亂了序列化方法。不太確定發生了什麼,但在$ .post方法之前調用了serialize()(而不是直接將其傳入)以及正確的參數。 – Godwin