我是一个使用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替换。但是我浏览器中的视图没有相应更新。我究竟做错了什么?
答案 0 :(得分:1)
我认为替换<script>
标记的内容不会导致它运行。试试这个:
$("script").replaceWith("<script><%= escape_javascript render "pages/poweroutputscript" %></script>");
或者只是创建一个新的<script>
并将其添加到您的文档中。