2011-06-15 42 views
2

我不是計算機科學家,而是貿易機械工程師。因此,如果我不使用正確的詞來形容事情,我很抱歉。我會盡力說清楚。如何重新渲染文本字段的javascript onchange?

我正在使用Rails站點來顯示客戶的太陽能逆變器的功率輸出。在繪製功率輸出的頁面上(使用javascript)我希望在該頁面上的JavaScript(使用嵌入的ruby)在文本字段(裏面有一個日期)的重新渲染。就像客戶希望查看不同日期的電量輸出數據一樣,此頁面的JavaScript將會相應地重新呈現。

我最初試圖在控制器動作中使用render :updatepage.replace_html,該動作將被稱爲文本字段的onchange,但經過進一步的研究發現這不被認爲是好的做法?更重要的是,我無法做到這一點(我很慚愧,非常感謝那些試圖幫助我的反應者)。

我看了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 onchange,我會很感激!

回答

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' 
0

首先,我會用螢火蟲或類似的東西,檢查當文本字段發生變化時發送請求。接下來我會檢查一下,看看答案是什麼。如果是500錯誤,請檢查應用程序日誌以獲取堆棧跟蹤。

我的猜測是,響應將是一個500錯誤,可能是因爲你的update_poweroutput函數試圖呈現的部分不存在,我認爲你需要指定

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

當然,除非,您正在渲染頁面視圖文件夾中存在的不同部分。在這種情況下,您是否在控制器中設置了所有必要的變量?