在发布请求后没有传递给控制器​​的值

时间:2014-02-10 02:05:38

标签: ruby-on-rails post ruby-on-rails-4

我正在尝试使用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]

但似乎没有任何效果。为什么translationkeytranslationvalue没有传递给控制器​​?

1 个答案:

答案 0 :(得分:0)

打算发表评论,但这会更清楚:


<强> .to_json

你试过.to_json吗? This answer似乎非常接受这个想法:

render json: params.to_json

如果不这样做,您是否考虑过只测试静态文本:

render "hello".to_json ?

<强>控制器

您确定要将正确的数据/参数发送到您的控制器吗?一些好的反馈将是您的请求记录