Rails中相同资源的不同路由

时间:2014-11-03 22:07:28

标签: ruby-on-rails ruby router

我有一个模型(资源)作为工作。它有自己的crud操作。作为员工和普通用户,作业索引的视图和路径不同。对于员工,只应该看到该特定员工的工作,而对于普通用户,应该看到所有工作。如何设计路线和控制器。

2 个答案:

答案 0 :(得分: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

显然,你可以做很多改进,但这应该让你前进。这样做的诀窍是,路由最适合指向控制器,控制器非常适合询问数据模型。

答案 1 :(得分: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

路由文件

  resources :jobs

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