2010-01-11 42 views
28

我正在構建一個應用程序,用戶可以通過將他們的電子郵件發送給評論來發表評論。formtastic - 如何預先填充字符串輸入的值

我希望他們能夠通過他們的電子郵件地址作爲參數
(如:<%= link_to register_path(:email => @comment.email %>)直接從那裏註冊 - 因此沒有現有的用戶記錄。
這應該通過:value選項將值應用於form.input字段來完成。

但下面的代碼不起作用!

<%- if params[:email] -%> 
    <%= f.input :email, :required => true, :value => params[:email] %> 
<%- else -%> 
    <%= f.input :email, :required => true %> 
<%- end -%> 

我看看我的本地寶石formtastic rdoc內內,但找不到任何選項。

建議任何人?

回答

66

是的,你自己得到了正確的答案! Formtastic的rdoc是一團糟,但我們正在努力。如果你想要這個另一種選擇純粹在視圖等級是使用:input_html選項,從而使您能夠輸入標籤的HTML屬性直接訪問:

f.input :email, :input_html => { :value => params[:email] } 
+0

+1,因爲這比接受的答案要好。如果你想做一些事情,比如對輸入值應用視圖幫助器方法,那麼這些代碼屬於視圖而不是控制器。 – jdl 2010-07-17 20:29:30

+0

這樣做的工作,但我們不應該有這樣的:value_method。 I.E. f.input:my_date,:value_method =>:格式化 – 2011-12-07 14:36:21

+0

Abe,隨時給GH添加一個問題。 – 2012-01-16 21:49:05

9

有時候最簡單的東西是你的頭腦問他們:

方法:做的工作在控制器不認爲!

if params[:email] 
    @user = User.new(:email => params[:email]) 
else 
    @user = User.new 
end 

對不起,打擾你了!

+2

或者乾脆:'@user = User.new(:電子郵件=> params [:email])'如果它是零,最終結果是一樣的。除非@user初始化設置電子郵件。 – Leito 2015-12-08 16:46:45