2011-06-21 60 views
1

我是一個使用rails和jquery開發的新手,並且一直在尋找一個簡單的例子來說明如何做到這一點。我有一個頁面,poweroutput.html.erb,顯示特定日期客戶太陽能系統的功率輸出。當他們輸入不同的日期時,我希望他們看到不同的輸出,但不必重新加載頁面。在我的網頁我有一些JavaScript,以及一個形式(提交日期,用戶希望看到的功率輸出)如下:Rails和jQuery:頁面上的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

我不認爲更換<script>標籤的內容會導致它運行。試試這個:

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

或者只是創建一個新的<script>並將其添加到您的文檔。

+0

是的!這工作!謝謝!幾天來,我一直都在爲此而流淚。 – pitachip

+0

在replaceWith完成其工作後,Firebug無法識別

相關問題