使用rails一次提交两个表单

时间:2013-12-11 13:52:26

标签: ruby-on-rails ruby forms ruby-on-rails-4 e-commerce

基本上我的想法很简单 - 我想为每个新用户创建一个新的购物车。表格本身是用脚手架生成的,我们在这里谈rails 4.0.1

有没有办法做到这一点,如果是这样 - 怎么样?也许你可以给我链接一些实例?

1 个答案:

答案 0 :(得分:0)

在Rails控制器中创建多个对象不需要多个表单。假设你有这样的关系:

class User < ActiveRecord::Base
  has_many :carts #or has_one :cart
end

class Cart < ActiveRecord::Base
  belongs_to :user
end

然后完全可以接受这样做:

class UsersController < ApplicationController
  def new
    @user = User.new
  end

  def create
    @user = User.new user_params
    if @user.save
      @user.carts.create # or @user.create_cart
      redirect_to user_path
    else
      render action: :new
    end
  end

  private
    def user_params
      params.require(:user).permit(...)
    end
end

如果新用户表单恰好包含某些特定于购物车的详细信息,请使用fields_for在表单中提供这些信息:

= form_for :user do |f|
  ... f.blah for user fields ...
  = fields_for :cart do |cart_fld|
    ... cart_fld.blah for cart fields ...

并将cart_params添加到您的控制器。