Rails和jQuery:页面上的Javascript正在重新加载但没有执行

时间:2011-06-21 14:50:11

标签: jquery ruby-on-rails

我是一个使用rails和jquery开发的新手,并且一直在寻找一个简单的例子,说明如何做好几天。我有一个页面poweroutput.html.erb,显示特定日期的客户太阳能系统的功率输出。当他们输入不同的日期时,我希望他们看到不同的输出,但无需重新加载页面。在我的页面上,我有一些javascript和一个表单(用于提交用户希望看到电源输出的日期),如下所示:

<head>
  <script type="text/javascript">
    <%= render "pages/poweroutputscript" %>  # renders a partial containing all my js
  </script>
</head>

# a form is here on this page too

我的页面控制器操作目前如下:

def poweroutput      
  # some code 

  if request.xhr?
    @date = params[:dt]         # dt is posted when form is submitted
  else 
    @date = Time.now.getlocal.strftime("%d.%m.%Y")
  end

  respond_to do |format|
    format.html 
    format.js { render :action "pages/poweroutput.js.erb" }
  end
end

并且poweroutput.js.erb如下:

$("script").html("<%= escape_javascript render "pages/poweroutputscript" %>");

原样,表单成功提交,我可以在Firebug上看到我的脚本标签之间的js确实被新js替换。但是我浏览器中的视图没有相应更新。我究竟做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为替换<script>标记的内容不会导致它运行。试试这个:

$("script").replaceWith("<script><%= escape_javascript render "pages/poweroutputscript" %></script>");

或者只是创建一个新的<script>并将其添加到您的文档中。