0

text_areaAjaxを使用して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') %>");

請求書_controller.rb :

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

コードはうまく機能し、選択メニューでrecipient何が選択されたかに応じて、text_area の値を正しいアドレスに置き換えます。project

問題はaddresses、データベースに既に存在する でのみ機能することです。( Rails Faker gemを使用してデータベースにデータを入力しています。) Safari ブラウザーで を手動で再保存した瞬間に、上記personaddressコードを使用して Ajax で更新しようとしても、text_area は更新されません。

これはどのように可能ですか?

上記の方法を使用して改行文字を既にエスケープしているgsub!ため、他にできることは考えられません。

誰でも助けることができますか?

ありがとう...

4

1 に答える 1

0

OK、アドレスのキャリッジ リターンが問題の原因であることがわかりました。

これらのキャリッジ リターンは、textarea. 上記の Faker gem は改行文字を作成しますが、キャリッジ リターンは作成しません。

これは、コンソールでデータベース レコードを調べたときにのみ見られまし\r\n

したがって、私の特定のケースでは、次のようにモデルのキャリッジ リターンを削除する必要がありました。

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

どのJavaScriptファイルでもこれを行うことができませんでした。

たった 1 行の単純なコードですが、私にとっては数時間の作業でした。うまくいけば、他の誰かがこれから恩恵を受けるでしょう。

于 2012-11-06T18:19:55.810 に答える