如何在Ruby on Rails中通过Ajax传递包含换行符的值?

时间:2012-10-21 18:52:21

标签: ruby-on-rails ruby ajax jquery

我正在尝试通过Ajax更新带有address的textarea:

的application.js

$("#invoice_project_id").change(function() {
    $.ajax({
        url: '/invoices/get_recipient',
        data: 'project_id=' + this.value,
        dataType: 'script'
    })
});

invoices_controller.rb

def get_recipient
  project = Project.find(params[:project_id])
  @recipient = project.person.address
end  

get_recipient.js.erb

$('#invoice_recipient').val("<%= @recipient %>");

显然,textarea不能通过这种方式通过Ajax填充,可能是由于address中的换行符。

当我使用其他属性时,例如first_name,整个过程非常有效:

@recipient = project.person.first_name

我如何才能使用address

我想地址内的换行符需要以某种方式进行转义,但我还没有找到办法。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果您可以替换更改返回的jQuery及其中的文本,并发送直接文本,您可以这样做:

$("#invoice_project_id").change(function() {
   var value=$(this).val();
    $.get('/invoices/get_recipient', {project_id= : value}  function(response) {
        $('#invoice_recipient').val(response);
    })
});​

将换行符作为直接文本发送而不是脚本应在将它们添加到textarea时保留它们