0

我正在text_area使用 Ajax 在 Rails 中更新一个简单的内容:

应用程序.js

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

get_recipient.js

$('#invoice_recipient').val("<%= @recipient.to_s.gsub!(/\n/, '\n') %>");

invoices_controller.rb

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

该代码运行良好,并将recipienttext_area 的值替换为正确的地址,具体取决于在project选择菜单中选择的内容。

问题是它只适用addresses于数据库中已经存在的。(我正在使用Rails Faker gem来填充我的数据库。)当我在我的 Safari 浏览器中手动重新保存a时,当我尝试使用上面的代码进行更新时,text_area 将不再通过 Ajax 进行更新。personaddress

这怎么可能?

我已经使用上面的方法转义了换行符gsub!,所以我想不出我还能做什么。

有人可以帮忙吗?

谢谢...

4

1 回答 1

0

好的,原来是地址中的回车导致了问题。

这些回车仅在通过 . 更新浏览器中的地址时创建textarea。上面提到的 Faker gem 创建换行符但没有回车。

我只有在控制台上检查我的数据库记录时才看到这一点,因为\r\n我查看的其他任何地方都看不到字符。

所以在我的特殊情况下,我只需要像这样删除模型中的回车:

address.gsub!("\r", "")

我无法在我的任何 javascript 文件中执行此操作。

只是一行简单的代码,但对我来说需要几个小时的工作。所以希望其他人会从中受益。

于 2012-11-06T18:19:55.810 回答