【问题标题】:formtastic - how to prepopulate a string input with a valueformtastic - 如何使用值预填充字符串输入
【发布时间】:2010-01-11 19:53:24
【问题描述】:

我正在构建一个应用程序,用户只需在评论中留下他们的电子邮件即可给 cmets。

我希望他们能够通过将电子邮件地址作为参数的链接直接从那里注册
(例如:<%= 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 和我的本地 gem,但找不到任何选项。

有人建议吗?

【问题讨论】:

    标签: ruby-on-rails formtastic


    【解决方案1】:

    是的,你自己就得到了正确的答案! Formtastic 的 rdoc 是一团糟,但我们正在努力。如果您只想在视图级别进行此操作,另一种选择是使用 :input_html 选项,它使您可以直接访问输入标记的 HTML 属性:

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

    【讨论】:

    • +1 因为这比接受的答案更好。如果您想对输入值应用视图辅助方法,则该代码属于视图,而不是控制器。
    • 这完成了工作,但我们不应该有类似 :value_method 的东西。 IE。 f.input :my_date, :value_method => :formatted
    • Abe,请随时在 GH 上添加问题。
    【解决方案2】:

    有时通过询问最简单的事情会浮现在您的脑海中:

    方法:在控制器而不是视图中完成工作!

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

    打扰了!

    【讨论】:

    • 或者简单地说:@user = User.new(:email =&gt; params[:email]) 如果为 nil,则最终结果是相同的。除非@user 初始化设置了电子邮件。
    猜你喜欢
    • 1970-01-01
    • 2021-02-10
    • 2019-08-12
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 2016-08-15
    相关资源
    最近更新 更多