Отвечая с помощью js в Rails
У нас есть ссылка_ для отправки сообщения ajax, и мы задаемся вопросом, есть ли способ изменить содержимое тега отправки.
Мы в основном хотим обновить базу данных, а затем изменить значок в блоке link_to.
<%= link_to add_favorite_path({type: type, id: id}),
type:"button", disable_with: '...', :method => :post,
:remote => true, class: 'btn btn-default btn-sm', id: "#{type}-#{id}" do %>
<i class="fa fa-plus"></i>
<% end %>
Вот любимый контроллер:
class FavoritesController < ApplicationController
respond_to :js
def add
@type = params[:type]
@id = params[:id]
@selector = "#{@type}-#{@id}"
end
end
РЕДАКТИРОВАТЬ: add.js.erb:
var link = $("a#<%= @selector %>");
link.html('<i class="fa fa-check"></i>');
Найденное решение: не удалось изменить элемент HTML при использовании disable_with:
вариант. Убрал его и все работает.
1 ответ
Решение
Вы можете просто убедиться, что соответствующий контроллер отвечает на JS
respond_to :js, :html
Затем создайте файл вида add.js.erb
добавить соответствующий JS для рендеринга нового значка. Я хотел бы видеть больше кода, но что-то вроде этого
$("#id_of_link").html("<i class='fa fa-check'></i>");
Хотя я обычно создаю партиалы и escape_javascript для рендеринга нового партиала в JS