2014-11-03 90 views
0

我有一个模型(资源)作为工作。它有自己的粗暴行动。当作为员工和普通用户查看时,查看和路由对于作业索引是不同的。对于员工而言,只应该看到该特定员工的工作,而对于普通用户应该看到所有工作。如何设计路线和控制器。Rails中相同资源的不同路线

+0

名单是什么,你需要在子弹显示的页面。 – mohameddiaa27 2014-11-03 22:11:20

+0

您应该在控制器中执行此操作...如果'用户'作业=此,那么,如果'员工',工作=这样那样的...... – 2014-11-03 22:18:52

+0

我是否正确:员工作为特权用户看到的工作比其他?什么是“普通用户”,是否应该通过认证?这个问题比有用的想法提出了更多的问题,考虑扩大背后的想法。 – 2014-11-03 22:21:25

回答

1

不同的控制器基于范围,命名空间员工的JobsController。

class Employee::JobsController < ApplicationController 
    before_filter :authenticate_employee! 
    layout "employee" 

    def index 
    @jobs = Job.all 
    .... 
    end 
end 


class UserController < ApplicationController 
    before_filter :authenticate_user! 
end 

class JobController < UserController 

    def index 
    @jobs = current_user.jobs 
    ... 
    end 

end 

routes文件

resources :jobs 

    namespace :employee do 
    resources :jobs 
    .... 
    end 
1

我会让你的索引控制器根据会话/ cookie哈希来调用模型上的不同过滤器。

例如:

# models/job.rb 
def my_jobs_only(some_variable) 
    if some_variable.empty? 
     Job.all 
    elsif params[:my_job_area] 
     Job.find(my_job_area) 
    # etc... 
    end 
end 

在你的控制器:

def index 
    if session[:user_id] 
     user = Users.find(user_id) 
     job = Job.find(user) 
     Job.my_filter job 
    else 
     Job.all 
end 

显然有很多的改进措施的,你可以用这个,但是,让应该让你去。这个技巧就是路由最适合指向控制器,控制器在询问数据模型方面非常出色。