0
我正在研究一个非常简单的类似RoR4论坛的应用程序。这是创建新论坛的forums_controller.rb操作:rails 4带有块的js.erb文件:其余的erb代码被忽略
def create
@new_forum = Forum.new(forum_params)
if @new_forum.save
respond_to do |format|
format.html { redirect_to forums_path }
format.js
end
else
respond_to do |format|
format.html { render 'new' }
format.js { render partial: 'form_errors' }
end
end
end
那里没有魔法。创建js.erb看起来像这样:
<%= add_gritter("This is a notification just for you!") %>
<%= broadcast "/forums/new" do %>
$('#forum_form').remove();
$('#new_forum_link').show();
$('#forums_table').append('<%= j render @new_forum %>')
<% end %>
一切实际上工作正常。您可以看到的广播块调用使用Faye来广播管理界面中更改的JavaScript。
我担心的是,无论是否在js.erb文件中的块以外(即add_gritter调用)都被完全忽略。我敢肯定,这不是一个问题,因为改变这一行以获取简单的警报('嗨');什么也没做。但是,如果调用在块内部移动,它会被执行(令人讨厌的效果是每个客户端都会收到通知,警报或其他)。我真的没有这方面的想法,并希望得到任何帮助。
你可以显示'js.erb'输出(客户端看到什么)?你可以检查Firebug或那样的网络,然后网络标签和这样的js请求响应。 – blelump 2014-11-14 19:47:44
'jQuery(function(){jQuery.gritter.add({title:'Notification',text:'这是个通知给你!')};}); #< Net :: HTTPOK:0xa521a34 >' 当create.js.erb文件被调用时,碰到create按钮后就会发生这种情况。 – 2014-11-14 19:51:27
现在,如果您从Firebug控制台手动运行这段代码,结果如何? – blelump 2014-11-14 19:53:03