嵌套表单

class Company < ActiveRecord::Base

  has_many  :users                    #注意这里是has_many

  has_one :newuser                #注意这里是has_one  

  accepts_nested_attributes_for :newuser

  ....................

end

 

 

通常B2B门户网站在用户注册(:controller=> :users)时,都要求填写一些公司信息,所以要使用嵌套表单,如下:

- form_for :company, :url => users_path do |f|   注意form_for :company:url => users_path 的不一致性

  %fieldset

    %p

      = f.label :name, '公司名称'

      = f.text_field :name

    %p

      = f.label :trade, '公司类型'

      = f.text_field :trade

    %p

      = f.label :webaddress, '公司网址'

      = f.text_field :webaddress

 

  %fieldset

    - f.fields_for :newuser_attributes  do |user_form|   (#关键就在这里了)

      %p

        %label{:for => 'email'} 电子邮箱

        = user_form.text_field :email

      %p

        %label{:for => 'login'} 用户名称

        = user_form.text_field :login

      %p

        %label{:for => 'password'} 用户密码

        = user_form.password_field :password        

      %p

        %label{:for => 'password_confirmation'} 重复密码

        = user_form.password_field :password_confirmation

      %p 

  %p      

f.submit "注册"  

 

 

接着就应该在User_controller下的create方法里,保存Company、User信息,如下:

def create

  @company = Company.newparams[:company] )

  @company.save

end

 

 

 

OK,我们看到上面只是非常简单的两句话,但是你会发现,执行@company.save时,除了执行insert  into  companies values (......),还会自动执行insert  into users  values (.....),从而实现一个表单的提交,同时操作两个数据库表。

神奇吧,赶快去试试^_^

 

参考资料:

 

http://guides.rubyonrails.org/2_3_release_notes.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值