Ruby on rails 具有动态项目数的表单

Ruby on rails 具有动态项目数的表单,ruby-on-rails,ruby,validation,dynamic-data,forms,Ruby On Rails,Ruby,Validation,Dynamic Data,Forms,正在考虑构建订单表单的最佳方法,该表单将(从用户角度): 允许添加多个项目 每个项目都有名称、作业类型下拉列表和文件上载 用户可以添加或删除项目 用户必须至少提供一项 应验证所有项目(例如:名称、作业类型和文件是必需的) 当他点击Submit时,应该创建一个包含所有项目的订单 因此该模型看起来像:User-1----*-Order-1----*-OrderItem-*-1-JobType。此外,OrderItem还包括许多属性,比如名称,文件 现在我想要一个尽可能瘦的控制器。使用“标准”

正在考虑构建订单表单的最佳方法,该表单将(从用户角度):

  • 允许添加多个项目
  • 每个项目都有名称、作业类型下拉列表和文件上载
  • 用户可以添加或删除项目
  • 用户必须至少提供一项
  • 应验证所有项目(例如:名称、作业类型和文件是必需的)
  • 当他点击Submit时,应该创建一个包含所有项目的订单

因此该模型看起来像:
User-1----*-Order-1----*-OrderItem-*-1-JobType
。此外,OrderItem还包括许多属性,比如
名称
文件


现在我想要一个尽可能瘦的控制器。使用“标准”代码更好,如:

class OrdersController < ApplicationController
  def create
    @order = Order.new(params[:order])
    if @order.save
      redirect_to account_url
    else
      flash.now[:error] = "Could not save Order"
      render :action => "new"
    end
  end
end
class OrdersController“新建”
结束
结束
结束
最有趣的事情是视图应该是什么样子,这样rails会自动绑定所有发布到正确对象的值

现在我不担心JavaScript的降级,而是担心要添加的项的模板,并将所有这些与验证(可能是部分验证)链接起来

我希望模板与下面的模板类似,但不确定

<input type='text' name='order[order_items[name[]]][]' />
<select name='order[order_items[job_type[]]][]'>...</select>
<input type='file' name='order[order_items[file[]]][]' />

...
我必须克隆此模板,以便使用JS添加项


因此,答案应该是:

  • 包括演示以下内容的视图或部分视图:
    • 正确绑定post值
    • 所有项目的正确验证
  • 包括模型的相关部分
  • 仅在必要时才包括对控制器的更改
  • (不需要JavaScript)
理想情况下,如果有人知道一个示例(可能在GitHub上的某个地方),我希望看到一个示例

最后一点,请在发布前检查您的解决方案

谢谢,

Dmitry.

没有直接回答这个问题,但这里有一些来源可以帮助您做到这一点:


就个人而言。你的问题给人的印象是请某人为你工作。如果我准时的话,我很乐意贴出一个答案来满足你的所有需求

托尼,我很抱歉给人这样的感觉,我希望有人为我做这项工作。我没有这样的打算。我只是想避免对答案的猜测,只想得到清楚的答案。这样的答案是你的。这很清楚,因为它确实提供了我期望的确切答案——铁路广播196(和197)。谢谢。