2014-09-25 45 views
0

我正在製作一個練習應用程序,我手動實施資源(任務),而不是使用Rails的內置功能。在Rails中,你需要在渲染之前重新分配所有的實例變量嗎?

索引頁面列出了任務並且有一個表單來創建一個新任務。如果在提交時出現錯誤,則會呈現索引頁並在頁面上顯示錯誤。

我的問題是:是否需要將索引操作中的每個實例變量賦值都複製到create操作中,以便它知道如何渲染索引頁?或者有什麼方法可以將@task實例變量傳遞給索引操作,並讓它處理所有其他操作?

現在我只複製了從索引動作一行到創建行動:

@tasks = Task.all 

,但我在更復雜的應用想象你可能有很多實例變量在一個單一的動作,讓我會猜測有一些替代方法可以將它們複製到呈現相同頁面的所有操作。

+1

使用'的before_filter:set_tasks,:只=> [:新:創造,...]' – Nithin 2014-09-25 12:41:06

回答

1

在你的控制器做:

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

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

您可以使用過濾器,並呼籲他們只對新創建EI

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 
相關問題