Отвечая с помощью 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

Другие вопросы по тегам