Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.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_Forms_Erb_Polymorphic Associations - Fatal编程技术网

Ruby on rails 如何将表单用于多态关联

Ruby on rails 如何将表单用于多态关联,ruby-on-rails,forms,erb,polymorphic-associations,Ruby On Rails,Forms,Erb,Polymorphic Associations,我试图在新的.html.erb页面上创建一个表单,它给了我一个未定义的方法“task\u presentations\u path”错误 = form_tag [@task, Presentation.new] do |f| = f.label :summary = f.text_field :summary 任务控制器 def new @task = Task.new end 路线 resources :presentations do resour

我试图在新的.html.erb页面上创建一个表单,它给了我一个未定义的方法“task\u presentations\u path”错误

= form_tag [@task, Presentation.new] do |f|
    = f.label :summary
    = f.text_field :summary
任务控制器

def new
    @task = Task.new
end
路线

resources :presentations do
        resources :tasks
    end
任务模型

class Task < ApplicationRecord
  belongs_to :taskable, polymorphic: true
  has_one :task_type
  has_one :task_status
end

由于您的
任务
模型是
演示文稿
嵌套
资源,最初它应该仅在存在
演示文稿
模型时才存在。所以

####### in the controller.

def new
   @presentation  = Presentation.find(params[:id])   
   @task = @presentation.tasks.new
end

###### in your view
= form_tag [@presentation,@task] do |f|
   ....
   ....

希望对您有所帮助。

由于您的
任务
模型是
演示文稿
嵌套
资源,最初仅当存在
演示文稿
模型时才应该存在。所以

####### in the controller.

def new
   @presentation  = Presentation.find(params[:id])   
   @task = @presentation.tasks.new
end

###### in your view
= form_tag [@presentation,@task] do |f|
   ....
   ....

希望有帮助。

我将运行
bundle exec rake routes | grep task
并查看该路由的名称。看起来可能是演示任务路径,但我不确定您是否可以添加控制器和模型的更多信息?是的,我已更新。我将运行
bundle exec rake routes | grep task
并查看该路由的名称。看起来可能是演示任务路径,但我不确定您是否可以添加控制器和模型的更多信息?是的,我已经更新了。是的,我确实尝试过。当我这样做时,我得到的错误是表单上未定义的方法“tasks\u path”更改表单参数…我已经更新了我的答案。作为演示文稿/任务…您需要先将演示文稿传递给表单,然后将任务传递给表单..检查我的答案。让我知道它是否有效:)。谢谢!:)它确实有效。然而,现在我得到的错误是在标签上,未定义的方法'label'表示nil:nilclass正如我所说,每个演示都有一个任务,因此,请验证演示文稿和任务都存在,然后检查它们的字段。您可以使用rails控制台快速检查模型及其列。如果对您有帮助,请接受答案。任务有一个名为摘要的字段,我不明白为什么它说它没有摘要字段,而实际上它是一个列。是的,我已经尝试过了。当我这样做时,我得到的错误是表单上未定义的方法“tasks\u path”更改表单参数…我已经更新了我的答案。作为演示文稿/任务…您需要先将演示文稿传递给表单,然后将任务传递给表单..检查我的答案。让我知道它是否有效:)。谢谢!:)它确实有效。然而,现在我得到的错误是在标签上,未定义的方法'label'表示nil:nilclass正如我所说,每个演示都有一个任务,因此,请验证演示文稿和任务都存在,然后检查它们的字段。您可以使用rails控制台快速检查模型及其列。如果对您有帮助,请接受答案。任务有一个名为摘要的字段,我不明白为什么它说它没有摘要字段,而实际上它是一列
####### in the controller.

def new
   @presentation  = Presentation.find(params[:id])   
   @task = @presentation.tasks.new
end

###### in your view
= form_tag [@presentation,@task] do |f|
   ....
   ....