2011-06-21 96 views
0

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

<head> 
<script type="text/javascript"> 
    // a lot of javascript 
</script> 
</head> 

<% form_tag(poweroutput_path, :method=>'post', :id => "date-form", :remote => true) do %> 
    <%= text_field_tag(
       'dt', nil, 
       { :id => 'date-field', 
       :class => 'dateformat-d-dt-m-dt-Y', 
       :value => Time.now.getlocal.strftime("%d.%m.%Y")    
       }) 
    %> 
    <%= submit_tag "Go" %> 
<% end %> 

所有我想要的是我的網頁上的JavaScript是表單提交時重新呈現。我的頁面的控制器操作是目前如下:

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 
    end 
end 

所有我想要的是我的網頁上的JavaScript來重新呈現了不同的@date我提交表單時。有誰知道一個簡單的方法來做到這一點?

+0

你爲什麼要這麼做?當表單提交時或用戶更改值時,您是否確實要調用JavaScript函數?現在表單上是否有任何JS,並且您在使用jQuery? –

+0

該頁面顯示特定日期客戶太陽能系統的功率輸出。當他們輸入不同的日期時,我希望他們看到不同的輸出,但不必重新加載頁面。對不起,我會嘗試編輯我的問題以使其更清楚。 – pitachip

回答

0

如果是大量的JavaScript,然後:

  1. 把日期某處網頁(V.G。,隱藏字段)
  2. 修改JavaScript,以便從那裏獲取價值。
  3. 爲JavaScript創建一個單獨的.js庫,並將其加載到頁面中。

這樣瀏覽器將從緩存javascript中獲益,從而減少服務器的負載和下載頁面的時間。

+0

爲什麼你要加載一個完整的JS文件,當他想要的是已經在頁面上>你只需要綁定一個函數的表單提交功能,你很好去。 –

+0

它實際上沒有那麼多的JavaScript - 也許150行。一切工作都很好,第一次加載。我只是不知道如何在提交表單時再次呈現JavaScript。 javascript使用控制器操作中的@date變量。我提交表單後這個變量會發生變化。而且我希望javascript能夠重新渲染以反映新的@date。 – pitachip

+0

@Devin M.我剛剛那樣做了,它重新渲染!對於其他新手,我只是在Ryan Bates的Railscast#136中複製並粘貼了application.js的函數。也許別人可以說爲什麼,但由於某種原因,即使在application.js中有這些適當的函數,poweroutput.html.erb中的js也不會在poweroutput.js.erb存在時重新渲染。所以我剛剛刪除了.js.erb,現在poweroutput.html.erb上腳本標記中的js正在重新渲染。現在我還有另一個問題。 – pitachip

相關問題