Мой проект представляет собой проект Ruby on Rails с рельсами версии 5.1.2
У меня есть модель с именем CannedResponse
, которая имеет атрибуты name
и response
, которые являются строками.Чтобы создать постоянный ответ с именем «ABC» и ответом
A
B
C
таким образом, чтобы каждый из «A», «B», «C» находился на новой строке, я ввожу так, как он есть наформа.В консоли базы данных / рельсов я вижу CannedResponse.find_by_name("ABC").response
возвращает "A\r\nB\r\nC"
Пока все хорошо.
Тогда у меня есть другая модель Message
, которая имеет атрибут body
в виде строки.Я хочу, чтобы при щелчке по стандартному ответу javascript (с использованием jQuery) автоматически заполнял часть тела формы сообщения ответом из стандартного ответа.Например, на странице с формой создания сообщения, в которой также есть список стандартных ответов, я нажимаю стандартный ответ «ABC», часть тела формы «Сообщение» автоматически заполняется
A
B
C
Это отлично работает на внешнем интерфейсе, используя этот код:
$('#canned-response-response').val("<%== escape_javascript @canned_response.response %>");
let response = $('#canned-response-response').val()
$('#message-body-text').val(response);
Затем я нажал «создать» и увидел, что это происходит в журнале:
INSERT INTO "messages" ("account_id", "to", "from", "body", "created_at", "updated_at", "service_provider_id", "read", "user_id", "ticket_id") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) RETURNING "id" [["account_id", 7], ["to", "16046140460"], ["from", "16477298395"], ["body", "A\nB\nC"],
.
Параметрами "body" стало "A\nB\nC"
вместо "A\r\nB\r\nC"
(именно таков ответ на самом деле готового ответа).
В результате, когда я делаю Message.where('body LIKE ?, "%#{canned_response.response}%")
, я ничего не получаю.Но Message.where('body LIKE ?, "%#{"A\nB\nC"}%")
вернет что-то.
Есть ли способ предотвратить это?