2011-05-11 56 views

回答

3

如果您對HTML5解決方案感到滿意,您是否嘗試過:text_field上的placeholder屬性?

你也真的想將text_field(它捕獲少量的文本)填充到「文本」類型列嗎?你是不是指text_area?

如果你想要「默認值」實際存儲在數據庫中,如果用戶不輸入任何東西,那麼我建議如下。這是「工廠」模式。

與其說「新」在你的ActiveRecord模型類,你在你的模型

def self.setup(params = {}) 
    new(params).tap do |v| 
    v.text_column = "default value" 
    # other defaultings 
    end 
end 

在你的控制器,而不是調用你呼叫建立的類新創建一個「設置」方法。

+1

你似乎確實採取了'text_field'的東西從以前的答案:-) 我實際上使用wysiwyg文本編輯器來允許編輯此字段。而這個文本編輯器實際上確實設置了一個空字符串。 – 2011-05-11 08:52:55

+0

但我正在做這樣的事情,像我不使用窗體/視圖的這些對象的導入。 好的提示:佔位符和工廠模式!不過,他們似乎並不像Rails/ActiveRecord那麼多。所以我可能會留下來。 – 2011-05-11 09:01:52

+0

@Simon,工廠模式非常強烈推薦Rails最佳實踐。使用工廠模式完全獨立於控制器或視圖,實際上它非常適合您的導入程序調用模型上的設置方法,並期望默認設置。你也可以考慮在模型中實現after_initialize方法。這會在每個新的(但也是每次查找後)被調用。還有active_record默認的相關插件。 http://ruby-toolbox.com/categories/activerecord_default_values.html – 2011-05-11 09:19:58

-1

在遷移

add_column :table_name, :column_name, :string, :default => 'your text' 

工作對我來說加入這個

+2

他有一個文本列而不是一個字符串列! – 2011-05-11 08:34:01

+0

這是MySQL和TEXT或BLOB列類型的組合,不接受默認值。在任何其他情況下,這將是我的首選方式。 – 2011-05-11 08:50:22

-3

如果你有新的形式的文本字段,使用這個文本字段的默認值:

#views/controller/new.html.erb 
<%= f.text_field :column_name, :value => "default value" %> 

這是一個很好的可用性選擇,因爲用戶知道該列的默認值。

雖然不要在edit.html.erb中使用它,因爲在這種情況下,無論數據庫中的原始值如何,此字段仍將具有默認值。

+1

即使我在數據庫中有「別的東西」,這總是會顯示text_field的值爲「默認值」嗎? – 2011-05-11 08:46:08

+0

@Aditya Sanghi - 是的,你是對的。此代碼應該用於創建新的新對象的視圖中。我會明確地在我的答案中。 – 2011-05-11 08:50:21

+0

你的意思是你還沒有幹你的形式在部分? :) – 2011-05-11 09:16:02

相關問題