Rails app将新行解释为param变量

时间:2012-08-17 16:21:00

标签: javascript html ruby ruby-on-rails-3 json

有点紧张。我从JavaScript传递了一大块HTML - 它已经使用serialize函数从JQuery表单序列化 - 到我的Rails控制器。然而,Rails控制器看到了几个变量,它们将HTML的块作为其名称。

在JQuery方面,这是代码的样子:

    $.ajax({
      url: myURL,
      type: 'get',
      data : $('#spinForm').serialize(),
      dataType: 'json',
      success: function(data) { 
        if(data.response.preview) {
            $('#channel_preview').html(data.response.preview);
        } else {
            $('#channel_preview').html("<strong>ERROR:</strong> " + data.response.error);
        }
      },
      error: function(XMLHttpRequest, textStatus, errorThrown) { 
        $('#json_error').html("<p><strong>Error:</strong> " + XMLHttpRequest.responseText + "<br />" + "Details: <br />" + errorThrown + "</p>"); 
      }
    });

这就是序列化数据的样子:

content_channel_credentials_id=1&title=This+is+my+title&content=%3Cp%3E%0D%0A%09This+is+my+content.%3C%2Fp%3E%0D%0A%3Cp%3E%0D%0A%09Here%26%2339%3Bs+a+little-known+secret+to+get+more+people+to+open+your+email+marketing+campaigns.%3C%2Fp%3E%0D%0A

我的Rails控制器只是从这里获取params [:content]变量,或多或少地传回来。但是,根据Rails(来自日志),这就是params变量的样子:

Parameters: {"act"=>"preview", "content"=>"<p>\r\n\tThis is my content.</p>\r\n<p>\r\n\tHere", "#39"=>nil, "s a little-known secret to get more people to open your email marketing campaigns.</p>\r\n"=>nil, "content_channel_credentials_id"=>"1", "title"=>"This is my title", "user_id"=>"1"}

看起来它正在解释解码后的&符号(用于替换引号,nbsps等)作为新参数,当然这是错误的,并且打破了序列化和URL编码的开始。我在这里缺少什么?

修改

我正在使用Ruby 1.9.2-p290到RVM和Rails 3.2.6

0 个答案:

没有答案