2010-07-19 70 views
4

我有一個Rails表單,它有一個observe_field,當更改下拉列表時,它執行ajax請求。 ajax導致表單被重新渲染(表單在部分中),並帶有一個額外的參數,導致頁面上的一些文本發生變化。所有的工作正常,但是當我刷新頁面(我運行的是Firefox)時,文本被重置,下拉列表不會改變它的值。因此,我最終得到一個與動態文本不相符的選擇值。Rails:使用頁面刷新重置表單域

我已經嘗試設置下拉菜單的默認選定值,但由於某些原因,Firefox不會更改頁面刷新的值。

這是鑑於下來的下降代碼:

<%= select_tag :category, options_from_collection_for_select(@categories, :letter, :name, @letter) %>

@letter被動態地設置並控制頁面上的動態文本。

這是在刷新頁面呈現的動作:

def new

@part = Part.new 
@letter = params[:letter] || "A" 
@part.cpn = Part.find_next_cpn(@letter) 
@categories = PartCategory.find(:all) 
respond_to do |format| 
    format.js 
    format.html 
end 

end

我需要一種方法來選擇保留動態文本信息或重置下拉菜單。

回答

5

您需要關閉「自動填充」選項 - 這會告訴瀏覽器您不希望該字段自動填充。

一個例子是在這裏:http://mspeight.blogspot.com/2007/06/disable-browsers-autocomplete-on-rails.html

你也可以做同樣的事情,但只要關閉自動完成特定領域。

換句話說,表單沒有被刷新,因爲瀏覽器試圖通過放入客戶使用的最後一個數據來幫助。您需要告訴瀏覽器停止嘗試提供幫助。你已經提供了正確的數據。

+0

工作就像一個魅力。 :) – Audie 2010-07-20 14:04:17

+0

很高興可以使用:) – jasonpgignac 2010-07-20 15:57:38

+0

感謝你對此 – NateQ 2016-03-07 08:40:31