在Rails中使用js进行响应

时间:2014-02-19 15:06:18

标签: ruby-on-rails link-to

我们有一个link_to发送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>');

找到解决方案: 使用disable_with:选项时无法更改项html。删除它,它的工作原理。

1 个答案:

答案 0 :(得分:1)

您可以确保相应的控制器响应JS

respond_to :js, :html

然后创建视图文件add.js.erb以添加适当的JS以呈现新图标。 我想看到更多的代码,但有类似的东西

$("#id_of_link").html("<i class='fa fa-check'></i>");

虽然,我通常创建partials和escape_javascript来渲染JS中的新部分