2012-09-17 49 views
0

如何將一個這樣做:Rails 3:Text_field_tag默認值如果參數[:something] .blank?

= f.input_field :age, 
        :collection => 18..60, 
        :id => 'age', 
        :selected => params[:age].blank? or "20" 

以上doesen't工作。如果無參數可用於該屬性,我希望能夠設置默認值。

任何智能的方法來做到這一點!

編輯1: 賽程表:

= simple_form_for :people, :url => request.fullpath, :method => :get, :html => { :class => 'form-search' } do |f| 
    #container_search_small.form-search 


     = f.input_field :age, 
         :collection => 18..60, 
         :id => 'age', 
         :selected => params[:people][:age_from] || "20" 



     = f.submit "Go »" 
+0

try params [:age] || 「20」 – Amar

+0

我認爲JavaScript應該用於設置默認值 –

+0

應該可以使用以下參數設置值:基於參數選擇但是如果參數未提交失敗。我得到一個未定義的方法'[]'零:NilClass – Rubytastic

回答

2

您使用的是從對象你正在構建的形式以他們的價值觀助手。

所以在你的控制器中,你應該預設對象的值。

def some_action 
    @people = People.new 
    @people.age = params[:age] || 20 
end 

然後在窗體中,刪除:selected選項,它應該沒問題。確保你建立的表格爲@people

= simple_form_for @people, :url => request.fullpath, :method => :get, :html => { :class => 'form-search' } do |f| 
    #container_search_small.form-search 


    = f.input_field :age, 
        :collection => 18..60, 
        :id => 'age' 



    = f.submit "Go »" 
+0

安東尼我更新我的帖子完整的例子。這是搜索表單的一部分,我不想創建只是想能夠設置值。 – Rubytastic

+0

編輯我的答案。您使用'simple_form_for'構建表單的方式,您可以在@people的假實例上設置值,它應該可以工作。如果你不想這樣做,你總是可以創建一個'form_tag'來代替:http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-form_tag –

+0

好的我看到這基本上幾乎是解決方案,但在這種情況下,url request.fullpath將需要初始化每個操作中的完整人員,或者我應該以某種方式使用before filter。我嘗試你的解決方案。說你想age_from和age_to你添加到可訪問的屬性?如「虛擬列」 – Rubytastic