js.erb文件正在执行两次.Ruby on Rails - private_pub

Imr*_*qvi 7 javascript ruby jquery ruby-on-rails ruby-on-rails-4

我正在研究chating模块.为此,我用过private_pub gem.在这个模块中,我已经制作了三个频道,但我不能在这里提到所有这些频道,因为它会显示一个非常非常大的页面.所以让我们坚持一个渠道.

我点击具有通道链接"<%= subscribe_to "/conversations/send_invitation" %>",然后ajax工作和去"conversations/send_invitation"(只有一次-这是确定),并在我的"/conversations/send_invitation"我有

def send_invitation
 @conversation = Conversation.new(conversation_params)
 respond_to do |format|
 format.js { render :layout => false }
 format.html
 end
end
Run Code Online (Sandbox Code Playgroud)

然后在我的send_invitation.js.erb文件中我有以下内容

<% publish_to "/conversations/send_invitation" do %>
var recipient_id = "<%=@conversation.recipient.id %>";
var current_temp_user = $("#current_temp_user").val();

if(recipient_id == current_temp_user){
console.log('here')
$("#invitation_div").html("<%=j(render :partial => '/restaurants/invitation')%>");
    card_modal = $('#invitation_card').modal();
    card_modal.modal('show');
}
<% end %>
Run Code Online (Sandbox Code Playgroud)

这是我的application.js档案

//= require jquery
// require jquery-ui
//= require jquery_ujs
// require turbolinks
//= require bootstrap
//= require jquery.raty
//= require private_pub
//= require_tree .
Run Code Online (Sandbox Code Playgroud)

模态显示在recipient side(很好).

现在的问题是,我可以看到两个modalsame id我的firefox console/html.而buttonsclosing/submitmodal也停止了工作.同样console.log在我的send_invitation.js.erb文件中显示了两次console.log结果,所以很明显js.erb文件正在执行两次.但要注意的是,ajax只运行一次.我浪费了几个小时就发现它只发现这个链接对我来说也不起作用,因为当我删除它jquery.js或者jquery_ujs.js它给了我错误

Imr*_*qvi 0

我找不到解决方案,但我认为值得有人告知实际问题。

就我而言,问题是我在同一页面上创建两个通道,这就是它与瘦服务器握手两次的原因。

注意但在一般情况下,如果我们两次包含 js 文件,也可能会发生这种情况。