在Rails中你必须在渲染之前重新分配所有实例变量吗?

时间:2014-09-25 12:37:18

标签: ruby-on-rails

我正在制作一个练习应用程序,我手动实现资源(Task),而不是使用Rails的内置功能。<​​/ p>

索引页面列出了任务,并有一个表单来创建新任务。如果提交时出错,则会呈现索引页面并在页面上显示错误。

我的问题是:是否需要将索引操作中的每个实例变量赋值都复制到create操作,以便它知道如何呈现索引页?或者有没有办法将@task实例变量传递给索引操作并让它处理其他所有事情?

现在我只是将一行从索引操作复制到创建操作:

@tasks = Task.all

但我想在更复杂的应用程序中,你可能在一个动作中有很多实例变量,所以我猜有一些替代方法可以将它们复制到渲染同一页面的所有动作。

2 个答案:

答案 0 :(得分:1)

在您的控制器中执行:

before_filter :set_instances, only: [:index, :create]

private
  def set instances
    @tasks = Task.all
    @task = Task.new
    ...
  end

答案 1 :(得分:0)

您可以使用过滤器并仅在新的create e.i

上调用它们
 class TasksController < ApplicationController
      before_filter :set_tasks,:only => [:index, :new, :create]
    def index
    ...
    end        

    def new
    ...
    end

    def create
     .....
    end
     def set_tasks
       @tasks = Task.all
       @task = Task.new
    end
end