【问题标题】:Simple form: create multiple objects简单形式:创建多个对象
【发布时间】:2014-08-05 08:14:32
【问题描述】:

在我的应用程序中,我想添加一个功能以在一个操作中创建多个对象:

localhost:3000/bank_accounts/new 上,我有一个用于创建@bank_account 对象的表单

= simple_form_for @bank_account do |f|
  = f.input :bank_name
  = f.input :account_number
  = f.button :submit

控制器:

  def new
    @bank_account = BankAccount.new
  end

  def create
    @bank_account = BankAccount.create(bank_params)
    if @bank_account.save
      redirect_to root_url
    else
      render 'new'
    end
  end

有没有办法在localhost:3000/bank_accounts/new上创建几个BankAccount的对象?

【问题讨论】:

  • 尝试将@bank_account = BankAccount.new 放入loop 之类的n.times do @bank_account = BankAccount.new end 中,其中n 是您要创建的instances 的数量。如果我是正确的,它可能会起作用。跨度>
  • @pavan 使用该循环,您只需一次又一次地编写相同的 bank_account 实例变量。您应该使用#build,请参阅我的回答者。

标签: ruby-on-rails ruby-on-rails-4 simple-form


【解决方案1】:

在我看来,您应该遵循“标准”方式, 可能银行帐户属于用户, 所以你有一个属于一个用户的银行账户,一个用户有很多银行账户。

在这种情况下,在控制器中你应该有类似的东西:

@user = User.find 1234 # get a user
10.times do
  @user.bank_accounts.build
end

在视图中,您应该使用循环为所有用户的银行帐户创建字段(您可以使用 fields_for)

最后,要创建这些银行账户,您甚至可以使用批量分配:

accepts_nested_attributes_for :bank_accounts

我希望这可以帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多