首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Formtastic和Formtaghelper

Formtastic和Formtaghelper
EN

Stack Overflow用户
提问于 2009-10-22 00:26:56
回答 3查看 1.5K关注 0票数 0

我想创建一个用户注册表单,其中用户勾选了一些没有连接到模型的框。

例如,可能有一个'terms & Conditions‘框,我不希望在用户模型中有一个布尔型字段,上面写着'ticked Terms & conditions’。相反,我想在其他地方(如事务)创建一条记录,记录他们接受T&C的日期/时间。

另一个例子可能是他们指出的一些偏好,我将在以后使用,并暂时保留在会话中,比如“记住我”。

我可以将这些类型的字段与常规表单帮助器混合使用。在使用formtastic时,我该如何做上面的任何一个示例?它不得不将传统的rails标签与可爱、整洁、形式化的代码混合在一起。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-22 01:33:28

您可以在模型中创建任意数量的虚拟属性,这些属性不一定需要绑定到数据库列。将attr_accessor :terms_and_conditions添加到用户模型中将使此“字段”对formtastic可用--即使它不是数据库字段。您可以像验证任何其他字段一样验证它,或者创建您自己的setter方法,以便在需要的地方创建一条记录。

票数 1
EN

Stack Overflow用户

发布于 2010-01-11 01:53:15

我倾向于不同意将attr_accessors用于特定于操作的entry元素的方法。如果需要记录Ts&C,那么这是有意义的,但有时你需要真正与模型无关的数据,而只与手头的特定操作相关,例如“在执行操作时执行一些重量级操作”。

假设您有一个注册表单,并且您没有使用OAuth,并且您可以选择在注册时指定twitter用户名和密码。这很好:

代码语言:javascript
复制
<%= form.input :twitter_username %>
<%= form.input :twitter_password, :as => :password %>

但下面的这一点让我感到困惑--在这种情况下,它就像formtastic一样,实际上是取走了已经存在的东西。有没有一种方法可以添加params:your-object,同时仍然保持形式化来做所有可爱的布局?

这样如何:

代码语言:javascript
复制
class User < ActiveRecord::Base
...
  #I don't want this here. Its only for UserController#create.
  #attr_accessor :tweet_when_signed_up 
...
end

和:

代码语言:javascript
复制
<%= form.input :tweet_when_signed_up, :as => :checkbox, :param_only => true %>

param_only是我编造的建议。它说‘这甚至不是一个暂时的属性,它只是为了这个动作。’

代码语言:javascript
复制
class UserController < ActionController::Base
...

def create
  if params[:tweet_when_signed_up] # haven't done this yet -- == 1 or !.nil?
     Tweeter.tweet( ... )
  end
  @user = User.create( params[:user] )
end

做到这一点的能力可能就在那里--有谁知道如何有效地做上面我认为是一个好主意的事情?

谢谢!

票数 1
EN

Stack Overflow用户

发布于 2009-10-22 12:29:51

相反,我想在其他地方(如事务)创建一条记录,记录他们接受T&C的日期/时间。

使用bensie描述的attr_accessor将该字段与formtastic集成在一起。

Formtastic是关于视图逻辑的,而关系是更多的模型逻辑。不要担心在表单中创建相关记录。取而代之的是,在模型中使用before_update和after_save等回调函数,以确保创建了相关记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1601979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档