0

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

@competition = Competition.find(params[:competition_id])
@entries = Array.new(3) {@competition.entries.build()}

条目具有以下属性:

  • 名称 - 字符串
  • 电子邮件 - 字符串
  • 标题 - 字符串
  • 说明 - 文字
  • 图片 - 使用回形针上传。

使用这种当前方法,用户需要在 3 个不同的框中输入他们的姓名以用于他们的不同条目。

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

4

2 回答 2

0

不太清楚你在这里问什么,但如果你从一个表单创建多个对象,你可能最好将此逻辑放入“表单对象”中......请参阅文章“重构 Fat 的 7 种模式”来自 CodeClimate 博客的 ActiveRecord 模型”(查找关于提取表单对象的第 3 节): http: //blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord -模型

简而言之,您创建一个包含一些必要 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
于 2013-09-18T05:57:33.737 回答
0

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

:class => "same-same", :onchange => "$('.same-same').each(function(name) {$(this).val(name); }, [$(this).val()]  );" 

这将遍历所有带有类的输入标签same-same并将值更改为与上次更改的值相同。

如果您只想显示第一个输入字段,请each_with_indexentries表单循环中使用并隐藏条目的名称输入字段index > 0

于 2013-09-18T00:31:26.623 回答