我正在尝试通过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
?
我想地址内的换行符需要以某种方式进行转义,但我还没有找到办法。
感谢您的帮助!
答案 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时保留它们