Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 组合作用域字段和一个附加表单呈现_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 组合作用域字段和一个附加表单呈现

Ruby on rails 组合作用域字段和一个附加表单呈现,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,假设我正在编写一个简单的TODO应用程序。有三个硬编码项目,用户可以向其中添加任务(使用方法的字段),因此基本上,我的表单如下所示: # task.first_project, task.second_project and task.third_project are a scopes for # retrieving tasks, which belongs to chosen project. = form_for setup_project(@project) do |f| h3

假设我正在编写一个简单的TODO应用程序。有三个硬编码项目,用户可以向其中添加任务(使用方法的字段),因此基本上,我的表单如下所示:

# task.first_project, task.second_project and task.third_project are a scopes for
# retrieving tasks, which belongs to chosen project.

= form_for setup_project(@project) do |f|
  h3 First project's tasks:
  = f.fields_for :tasks, f.object.tasks.first_project do |ff|
    = ff.text_field :title
    = ff.hidden_field :project_id, value: 1

  h3 Second project's tasks:
  = f.fields_for :tasks, f.object.tasks.second_project do |ff|
    = ff.text_field :title
    = ff.hidden_field :project_id, value: 2

  h3 Third project's tasks:
  = f.fields_for :tasks, f.object.tasks.third_project do |ff|
    = ff.text_field :title
    = ff.hidden_field :project_id, value: 3
我还有一个表单助手,用于在任务表单列表末尾添加一个空任务表单:

  def setup_project(project)
    1.times { project.tasks.build }
    project
  end
这就是我的主要问题。只有当我对使用
fields\u而不使用任何作用域时,form helper中的这段代码才能完美工作。当我添加它们时,不会显示额外的表单构建

请注意:上面的示例只是我实际编程的一个非常简化的版本。请不要建议我重写我的应用程序,让更多的动态项目添加功能或类似的东西。相信我,它确实需要以一种奇怪的方式工作:)


谢谢你的帮助

我已通过使用以下代码使其正常工作:

# task.first_project, task.second_project and task.third_project are a scopes for
# retrieving tasks, which belongs to chosen project.

= form_for @project do |f|
  h3 First project's tasks:
  = f.fields_for :tasks, setup_tasks(f.object.tasks.first_project) do |ff|
    = ff.text_field :title
    = ff.hidden_field :project_id, value: 1

  h3 Second project's tasks:
  = f.fields_for :tasks, setup_tasks(f.object.tasks.second_project) do |ff|
    = ff.text_field :title
    = ff.hidden_field :project_id, value: 2

  h3 Third project's tasks:
  = f.fields_for :tasks, setup_tasks(f.object.tasks.third_project) do |ff|
    = ff.text_field :title
    = ff.hidden_field :project_id, value: 3
表格:

def steup_tasks(tasks)
  tasks << tasks.build
end
def steup_任务(任务)
任务