2012-10-21 25 views
0

我想通過Ajax更新與address一個textarea:如何在Ruby on Rails中傳遞包含換行符Ajax的值?

的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

,您可以發送文本,而不是腳本,使'VAL()'在阿賈克斯成功更新替代。如果是文字,則不需要換行。如果發送文本將使用'$ .get(url,function(response){$('#invoice_recipient')。val(response);})' – charlietfl

+0

謝謝,但我究竟在哪裏放置該行?你能幫我一個忙,並將其插入我的代碼上面? – Tintin81

+0

將取代所有'$ .ajax'。 '$ .get'是'$ .ajax'的快捷方法,其中一些選項已經設置爲代碼簡化 – charlietfl

回答

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的

+0

好的,謝謝,但是現在我得到這個錯誤:'找不到沒有ID的項目'。你確定我不需要傳遞更多的選擇,例如'project_id'? – Tintin81

+0

我的壞是的....你有數據被髮送到服務器。我將數據參數添加到'$ .get'上。 – charlietfl

+0

好的,我必須對上面的代碼做一些小的調整才能使它工作。但是輸出現在與我最初的代碼示例完全一樣。它仍然不適用於多行字段。我在這裏錯過了什麼? – Tintin81

相關問題