2010-01-11 107 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