【问题标题】:Creating multiple records at once from comma seperated IDs从逗号分隔的 ID 一次创建多个记录
【发布时间】:2012-07-26 05:09:08
【问题描述】:
所以我有一个文本字段,用户可以在其中放置逗号分隔的卡 ID,例如 1、2、3。当这个用户提交表单时,我想为他提交的每个 ID 创建一个新记录。所以一拖一,一拖二,一拖三。
我该怎么做?
谢谢
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-3
【解决方案1】:
有几种方法可以实现这一点,具体取决于您的具体需求。
一种方法是遍历控制器中的所有条目,就像@rogal111 在他的回答中建议的那样。
如果您的用户和卡片之间存在一对多关系,无论如何这很可能是要走的路,我建议您通过嵌套表单来完成它。瑞安·贝茨在 screencasts 上做了一些出色的工作。
【解决方案2】:
您必须从控制器中的文本字段解析输入值。
例如:
def update
ids_input=params[:ids]
ids_input.split(',').each { |id|
Card.create(:some_id=>id,:other_column=>'some_value',:related_user=>current_user)
}
end
【解决方案3】:
试试
ModelName.create(input_string.split(',').map{ |i| { :field => i.strip } })
split 将以逗号分隔输入,map 将生成一个 { :field => i } 数组,其中 :field 是您模型的文本字段。