我正在研究聊天模块.为此,我使用了private_pub gem.在这个模块中,我已经制作了三个频道,但我不能在这里提到所有这些频道,因为它会显示一个非常非常大的页面.所以让我们坚持一个渠道.
我点击频道“<%= subscribe_to”/ conversation / send_invitation“%>”的链接然后ajax工作并转到“conversation / 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
然后在我的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 %>
这是我的application.js文件
//= require jquery // require jquery-ui //= require jquery_ujs // require turbolinks //= require bootstrap //= require jquery.raty //= require private_pub //= require_tree .
并且模式显示在接收方(这是好的).
现在问题是我可以在我的firefox控制台/ html中看到两个具有相同id的模态.关闭/提交模态的按钮也停止工作.我的send_invitation.js.erb文件中的console.log也显示了两次console.log结果,所以很明显js.erb文件正在执行两次.但值得注意的是,ajax只运行了一次.我浪费了几个小时就发现它只发现This link对我来说也不起作用,因为当我删除jquery.js或jquery_ujs.js时它给了我错误