2014-11-14 35 views
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调用)都被完全忽略。我敢肯定,这不是一个问题,因为改变这一行以获取简单的警报('嗨');什么也没做。但是,如果调用在块内部移动,它会被执行(令人讨厌的效果是每个客户端都会收到通知,警报或其他)。我真的没有这方面的想法,并希望得到任何帮助。

+0

你可以显示'js.erb'输出(客户端看到什么)?你可以检查Firebug或那样的网络,然后网络标签和这样的js请求响应。 – blelump 2014-11-14 19:47:44

+0

'jQuery(function(){jQuery.gritter.add({title:'Notification',text:'这是个通知给你!')};}); #< Net :: HTTPOK:0xa521a34 >' 当create.js.erb文件被调用时,碰到create按钮后就会发生这种情况。 – 2014-11-14 19:51:27

+0

现在,如果您从Firebug控制台手动运行这段代码,结果如何? – blelump 2014-11-14 19:53:03

回答

0
<%= broadcast "/forums/new" do %> 

正在执行的结果随着JavaScript(即HTTOK),它使它走了。所以它应该是

<% broadcast "/forums/new" do %> 

注意缺少=。