2017-08-27 113 views
0

所以我有我的網絡應用程序設置允許用戶創建一個只能由他們的團隊看到的項目。在項目中,可以創建任務。我希望這些任務僅限於其創建的項目。但是,當我創建兩個單獨的項目並導航到視圖屏幕時,我在每個項目下看到相同的任務。如何使嵌套資源受限制

TasksController

def index 
    project = Project.find(params[:project_id]) 

    @task = project.tasks 

    respond_to do |format| 
    format.html # index.html.erb 
    format.xml { render :xml => @tasks } 
    end 
    @task = Task.order('title').page(params[:page]).per(4) 
end 

def show 
    project = Project.find(params[:project_id]) 

    @task = project.tasks.find(params[:id]) 

    respond_to do |format| 
    format.html # show.html.erb 
    format.xml { render :xml => @task } 
    end 
end 

ProjectsController

def index 
    @project = current_account.projects 
end 

def show 
    @project = current_user.projects.find(params[:project_id]) 
end 

路線

resources :projects do 
     resources :tasks 
end 

回答

0

我覺得你的問題是早晚的事使用@task和@tasks

def index 
    project = Project.find(params[:project_id]) 

    # if I follow your program 
    # this should be @tasks 
    @tasks = project.tasks 

    respond_to do |format| 
    format.html # index.html.erb 
    # here you render @tasks 
    format.xml { render :xml => @tasks } 
    end 
    @task = Task.order('title').page(params[:page]).per(4) 
end 

def show 
    project = Project.find(params[:project_id]) 

    @task = project.tasks.find(params[:id]) 

    # simple check makesure @task is child of project 
    if @task.project_id == project.id 
     respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @task } 
     end 
    end 
end 
+0

感謝發佈,我做了這個調整。但它仍然沒有達到我的預期。 – nomad

+0

好的,我可以知道什麼控制器程序仍然沒有做正確的索引/顯示? – widjajayd

+0

所以我有項目/ 1和項目/ 2我可以進入項目/ 2並查看來自項目/ 1的任務我希望他們被限制在哪個項目和用戶下創建它們。我相信任務控制器索引是需要更多代碼的地方。我知道我可以嘗試使用Can Can,但寧願可能推出我自己的授權。 – nomad