2015-01-09 3 views
3

У меня есть text_field_tag ​​с link_to:Добавление данных запроса AJAX с помощью UJS, Rails

<div> 
    <%= text_field_tag :requester_field %> 
    <%= link_to "Add", add_requester_tasks_path, id: "requester_btn", remote: true %> 
</div> 

Использование рельсов UJS нажав кнопку Добавить вызовет запрос AJAX на контроллер действия, указанного add_requester_task_path. Где я могу вернуть скрипт обратно в браузер, используя блок response_to.

Каким будет лучший способ добавить значение text_field к этому запросу?

Таким образом, я могу получить к нему доступ в контроллере через хэш параметров.

К лучшему я имею в виду самый чистый способ, используя UJS. Я посмотрел на некоторые ajax: callbacks, но я не могу понять, как добавить данные в запрос.

Я использую сценарий кофе для JS. Этот код является частью большей формы, которая создает задачу. Задача has_many запросчиков. В этом коде будет заполняться список запросов на основе адреса электронной почты, введенного в текстовое поле. Отправка формы свяжет запросчиков с задачей. Вот почему я не могу использовать форму внутри формы.

+3

Совет для stackoverflow: для форматирования текста в блок кода, выберите соответствующий текст и нажмите ctrl + k (или добавьте 4 пробела перед каждой строкой блока). Если вы хотите «встроенный» фрагмент кода, используйте обратные выходы ' – MrYoshiji

+1

. Есть ли причина, по которой вы не хотите использовать форму? – ptd

+0

@MrYoshiji Спасибо. Я пробовал с 4 пробелами, но мне не понравился div, поэтому я решил использовать синтаксис кода. Я не знал о ctrl + k – Kocur4d

ответ

1

Следуя предложению charlietfl, я посмотрел исходный код UJS (который в конечном итоге был очень коротким ...).

Я пришел к этому решению:

Вы должны иметь удаленный: правда на ссылку, чтобы включить UJS.

Вам нужно добавить этот код на JS/кофе файл (код предположим turbolinks для DOM Ready)

ready = -> 
    $("#requester_btn").on "ajax:before", (event, xhr, settings) -> 
    $(this).data('params', $("#requester_field").serialize()) 
    return 

$(document).on("page:change", ready) 

Добавление данных-Params в связи с сериализованным значением text_field позволит UJS сделать его магия.