无法使用escape_javascript以我想要的方式工作,rails

时间:2015-09-18 17:53:38

标签: javascript jquery ruby-on-rails ruby

目前在学校我正在尝试构建一个维基百科类型的副本应用程序,我仍然坚持如何正确使用escape_javascript方法。我有一个wiki编辑页面,如果Wiki被检查为私有,我想添加/删除协作者。现在,我正在使用ajax在没有页面刷新的情况下添加/删除协作者(这是有效的),但是我在编辑页面上实时更新协作者时遇到了问题。

这是我到目前为止所做的:

collaborators_controller.rb:

class CollaboratorsController < ApplicationController
  def create
    Collaborator.create(wiki_id: params[:wiki_id], user_id: params[:user_id])

    render js: "$('#"+params[:user_id]+"').text('Remove');"
               "$('.js-collaborators-count').html('<%= escape_javascript(render partial: 'wikis/count') %>');"
  end

  def destroy
    collab = Collaborator.find(params[:id])
    user_id = collab.user_id
    collab.destroy

    render js: "$('#"+user_id.to_s+"').text('Add');"
               "$('.js-collaborators-count').html('<%= escape_javascript(render partial: 'wikis/count')) %>');"
  end
end

_count.html.erb

<%= pluralize(@wiki.collaborators.count, 'collaborator') %>

更新

我在collaborators_controller.rb中修改了我的销毁操作,并且还创建了一个destroy.js.erb文件(我希望在我处理create.js.erb视图之前让我的destroy.js.erb视图工作)。但是,现在我不断收到以下错误,无论我参与哪一行涉及尝试更新协作者计数(您将在下面看到其他评论的尝试)。

服务器日志错误: https://gist.github.com/jlquaccia/6c2ae2661d8cc15625f6

collaborators_controller.rb:

 def destroy
    @collab = Collaborator.find(params[:id])
    @user_id = @collab.user_id
    @collab.destroy

    respond_to do |format|
      format.html
      format.js
    end
  end

destroy.js.erb:

<% if @collab.destroyed? %>
  $('#'+<%= @user_id.to_s %>).text('Add');
  $('.js-collaborators-count').html("<%= pluralize(@wiki.collaborators.count, 'collaborator') %>");
  // $('.js-collaborators-count').html("<%= escape_javascript(pluralize(@wiki.collaborators.count, 'collaborator')) %>");
  // $('.js-collaborators-count').html("<%= raw escape_javascript(render partial: 'wikis/count') %>");
<% else %>
  $('#'+<%= @user_id.to_s %>).prepend("<div class='alert alert-danger'><%= flash[:error] = 'Oops something went wrong..' %></div>");
<% end %>

0 个答案:

没有答案