【发布时间】:2016-02-27 23:45:35
【问题描述】:
我正在开发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
然后在我的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 .
模态显示在recipient side(这很好)。
现在的问题是我可以在firefox console/html 中看到两个modal 和same id。而buttons 的closing/submit 和modal 也停止工作。我的send_invitation.js.erb 文件中的console.log 也显示了两次console.log 结果,因此很明显js.erb 文件正在执行两次。但需要注意的是ajax 只运行了一次。我在上面浪费了几个小时,发现只有This link 对我也不起作用,因为当我删除jquery.js 或jquery_ujs.js 时,它会给我错误
【问题讨论】:
-
你的服务器日志说什么?操作
send_invitation执行一次还是两次?也许您要订阅该频道两次?您可以在浏览器的开发者控制台中进行调试。 -
@coorasse 不,它只调用了一次
send_invitation -
那么,如果你订阅了两次频道,你能在开发者控制台中看到吗?
-
我在同一个页面订阅了两个不同的频道 - 有什么问题吗
-
执行send_invitation方法时服务器的响应是什么?
标签: javascript jquery ruby-on-rails ruby ruby-on-rails-4