Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用共享值rails在表单中创建多个对象_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 使用共享值rails在表单中创建多个对象

Ruby on rails 使用共享值rails在表单中创建多个对象,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有一个表格,需要创建3个记录。但是,在记录中有重复的名称和电子邮件地址,所有记录都需要相同。目前是这样的: @competition = Competition.find(params[:competition_id]) @entries = Array.new(3) {@competition.entries.build()} 条目具有以下属性: 名称字符串 电子邮件字符串 标题字符串 说明-文本 图像-使用回形针上传 使用此当前方法,用户需要在3个不同的框中为其不同的条目输入其名称

我有一个表格,需要创建3个记录。但是,在记录中有重复的名称和电子邮件地址,所有记录都需要相同。目前是这样的:

@competition = Competition.find(params[:competition_id])
@entries = Array.new(3) {@competition.entries.build()}
条目具有以下属性:

  • 名称字符串
  • 电子邮件字符串
  • 标题字符串
  • 说明-文本
  • 图像-使用回形针上传
使用此当前方法,用户需要在3个不同的框中为其不同的条目输入其名称


rails阻止用户三次输入相同数据的方法是什么?是否将另一个对象发送到表单,然后在create方法中将它们组合在一起?尽管我担心这在验证时会有问题

您可以使用jQuery。将这些html选项添加到
name
字段标记中

:class => "same-same", :onchange => "$('.same-same').each(function(name) {$(this).val(name); }, [$(this).val()]  );" 
这将迭代类
相同的所有输入标记,并将值更改为与上次更改的值相同


如果您只想显示第一个输入字段,则在
条目上使用
每个带索引的\u
表单循环,并隐藏带
索引>0的条目的名称输入字段
不太确定您在这里要问什么,但是如果你从一个表单创建多个对象,你最好不要把这个逻辑放到一个“表单对象”中。。。请参阅此处找到的CodeClimate博客中的文章“重构Fat ActiveRecord模型的7种模式”(请参阅第3节“提取表单对象”):

简而言之,您可以创建一个自定义模型,包括一些必要的ActiveModel模块,然后创建一个自定义保存方法,例如

  def save
    if valid?
      persist!
      true
    else
      false
    end
  end

private

  def persist!
    @company = Company.create!(name: company_name)
    @user = @company.users.create!(name: name, email: email)
  end