我不是计算机科学家,而是贸易机械工程师。因此,如果我不使用正确的词语来描述事物,我会事先道歉。我会尽力清楚。
我正在开发一个显示客户太阳能逆变器功率输出的Rails站点。在绘制功率输出的页面上(使用javascript)我希望在该页面上的javascript(带有嵌入式ruby)在文本字段的更改中重新呈现(其中包含日期)。当客户想要查看不同日期的电力输出数据时,此页面的javascript将相应地重新呈现。
我原本试图在控制器操作中使用render :update
和page.replace_html
,这会在文本字段的更改中被调用,但经过进一步的研究发现这不是一种好的做法?而且更重要的是,我无法让它发挥作用(我很惭愧。非常感谢那些试图帮助我的响应者!)。
我观看了Railscast#136,并试图将这些信息调整到我需要的位置。
页面为poweroutput.html.erb
。我的所有javascript都在主html文件中的脚本标记内。 poweroutput.html.erb
上的文本字段元素的html如下(它不起作用):
<%= text_field_tag(
'dt', nil,
{ :id => 'date-field',
:class => 'dateformat-d-dt-m-dt-Y',
:onchange => remote_function(
:url => {:controller => 'pages', :action => 'poweroutput'})
})
%>
所以我认为上面基本上只是刷新/重新渲染文本字段的更改页面,但没有任何反应。
请帮我洗头。我认为我的问题的一部分必须是我不明白remote_function
方法调用的底层Ajax函数是做什么的。如果您能够对此提出一些看法,或者提出一种完全不同的方法来重新渲染javascript on text of text field,我将非常感激!
答案 0 :(得分:0)
我认为有两件事可能是错的:
1)用div包装你的部分,因为AJAX调用结果渲染为div:
<script type="text/javascript">
<div id="poweroutputscript_partial">
<%= render 'javascripts/poweroutputscript.html.erb' %>
</div>
</script>
2)在您的操作中,指定部分的完整路径:
page.replace_html "poweroutputscript_partial", :partial => 'javascripts/poweroutputscript'
答案 1 :(得分:0)
首先,我会使用firebug或类似方法检查文本字段更改时是否发送了请求。接下来我会检查一下响应是什么。如果是500错误,请检查应用程序日志以查找堆栈跟踪。
我的猜测是响应将是500错误,可能是因为你的update_poweroutput函数试图渲染一个不存在的部分,我认为你需要指定
:partial => 'javascripts/poweroutputscript.html.erb'
除非您正在呈现页面视图文件夹中存在的不同部分。在这种情况下,您是否在控制器中设置了所有必要的变量?