2017-08-27 2 views
0

So habe ich meine Web-App-Setup so dass ein Benutzer ein Projekt erstellen kann, das nur von ihrem Team gesehen werden kann. Innerhalb des Projekts können Aufgaben erstellt werden. Ich möchte, dass diese Aufgaben nur auf das Projekt beschränkt sind, unter dem sie erstellt wurden. Wenn ich jedoch zwei separate Projekte erstelle und zum Ansichtsbildschirm navigiere, sehe ich unter jedem Projekt dieselben Aufgaben.Wie verschachtelte Ressourcen restriktiv gemacht werden können

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 

Routen

resources :projects do 
     resources :tasks 
end 

Antwort

0

Ich glaube, Sie Problem eine Sache ist @task mit und @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

Danke für das Posten, habe ich diese Anpassung vorgenommen. Aber es tut immer noch nicht das, was ich erwartet habe. – nomad

+0

ok darf ich wissen in welchem ​​controller das programm noch nicht richtig index/show macht? – widjajayd

+0

Ich habe also Projekt/1 und Projekt/2 Ich kann in Projekt/2 gehen und sehe Aufgaben aus Projekt/1 Ich möchte, dass sie auf das Projekt und Benutzer, unter denen sie erstellt wurden, beschränkt sind. Ich glaube, dass der Aufgaben-Controller-Index dort ist, wo mehr Code benötigt wird. Ich weiß, dass ich Can Can versuchen könnte, würde aber vielleicht lieber meine eigene Erlaubnis rollen. – nomad

Verwandte Themen