我正在尝试使用ajax进行简单的帖子调用,表单包含语言标识符,i18n键和字符串翻译值。
我的路线设置如下:
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]
但似乎没有任何效果。为什么translationkey
和translationvalue
没有传递给控制器?
答案 0 :(得分:0)
打算发表评论,但这会更清楚:
<强> .to_json 强>
你试过.to_json
吗?
This answer似乎非常接受这个想法:
render json: params.to_json
如果不这样做,您是否考虑过只测试静态文本:
render "hello".to_json ?
<强>控制器强>
您确定要将正确的数据/参数发送到您的控制器吗?一些好的反馈将是您的请求记录