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 3 Rails 310重定向循环_Ruby On Rails 3_Model View Controller_Redirect_Controller - Fatal编程技术网

Ruby on rails 3 Rails 310重定向循环

Ruby on rails 3 Rails 310重定向循环,ruby-on-rails-3,model-view-controller,redirect,controller,Ruby On Rails 3,Model View Controller,Redirect,Controller,我要回去写一个基本的应用程序,其中包含有任务的项目。在项目的“显示”视图中,我希望列出任务并包含表单。当我把这一切连接起来时,我得到了310个重定向循环。我已经有一段时间没有白手起家地写任何东西了,所以如果您能帮助我查看代码,我将不胜感激 控制器代码: def show @project = Project.find(params[:id]) @task = @project.tasks.new(params[:task]) if @task.save

我要回去写一个基本的应用程序,其中包含有任务的项目。在项目的“显示”视图中,我希望列出任务并包含表单。当我把这一切连接起来时,我得到了310个重定向循环。我已经有一段时间没有白手起家地写任何东西了,所以如果您能帮助我查看代码,我将不胜感激

控制器代码:

def show
     @project = Project.find(params[:id])
     @task = @project.tasks.new(params[:task])

     if @task.save
         redirect_to @project, :notice => "Task added"
       else
         render action: :show
       end
   end
查看代码:

<%= @project.project_name %>
<%= form_for(@task) do |m| %>
<%= m.label :Task %>
<%= m.text_field :task_name %>
<%= m.button :submit %>
<% end %>
<% @project.tasks.each do |t| %>
  <%= t.task_name %>
<% end %>
task.rb

belongs_to :project

您正在重定向到
@project
,这被解释为含义,请重定向到
@product
的显示页面。但是您正在从显示页面调用重定向,因此重定向循环:

  • 请求路由到显示页面
  • 查找项目
  • 实例化的任务
  • 保存的任务
  • 重定向到显示(循环回2)
  • 通常,您不会在
    show
    中创建记录,而是在
    create
    中创建记录。你为什么要这样做

    belongs_to :project