繁体   English   中英

如何重新呈现文本字段的javascript onchange?

[英]How can I re-render javascript onchange of a text field?

我不是计算机科学家,而是行业机械工程师。 因此,如果我没有使用正确的词来形容事物,我事先表示歉意。 我会尽力弄清楚。

我正在一个Rails站点上工作,该站点显示客户的太阳能逆变器的功率输出。 在绘制功率输出的页面上(使用javascript),我希望在更改文本字段(其中带有日期)时重新渲染该页面上的javascript(具有嵌入式ruby)。 就像客户希望在不同日期查看其功率输出数据一样,此页面的javascript将相应地重新呈现。

我最初试图在控制器操作中使用render :updatepage.replace_html ,该操作将被称为文本字段的onchange,但经过进一步研究发现这不是好习惯吗? 而且,更重要的是,我无法使其正常工作(我很as愧。非常感谢那些尝试帮助我的响应者!)。

我观看了Railscast#136,并尝试根据我的需要调整该信息。

该页面是poweroutput.html.erb 我所有的JavaScript都在主要html文件的script标记内。 poweroutput.html.erb上的text字段元素的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,我将非常感谢!

我认为这里有两件事可能是错误的:

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'

首先,当文本字段更改时,我将使用Firebug或类似工具检查请求是否已发送。 接下来,我将检查响应是什么。 如果是500错误,请检查应用程序日志中是否有堆栈跟踪。

我的猜测是响应将是500错误,可能是因为您的update_poweroutput函数正在尝试呈现不存在的部分,我认为您需要指定

:partial => 'javascripts/poweroutputscript.html.erb'

除非您当然要渲染页面视图文件夹中确实存在的其他部分。 在这种情况下,是否要在控制器中设置所有必需的变量?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM