两个不同的显示视图,用于rails中的restful资源

时间:2016-12-12 08:55:43

标签: ruby-on-rails

我有一个工作应用程序,有两种(未经过身份验证的)用户,推荐人和候选人。

目前我有1个作业控制器和模型。

基本上,我想要两条路线:

job/1 # jobs#show for referrers
j/1   # jobs#show for candidates

两条路线都是公共路线,没有登录用户。

虽然两条路线的模型数据(=内容)非常相似,但视图明显不同。我正在努力在同一个控制器中创建两个不同的节目视图。

我已经看过设置一个单独的命名空间(似乎是整个控制器),特定的获取路由或设置一个单独的控制器,但真的不确定最好的" Rails"方式是。

任何建议都会非常有用,提前谢谢!

2 个答案:

答案 0 :(得分:1)

我看到两个选项:

1)在控制器中创建单独的操作

def referrers
end 

def cadidates
end

get '/j/:id' => 'jobs#cadidates'
get '/job/:id' => 'jobs#referrers'

这需要两个带有操作的新视图。在您的作业视图文件夹中添加两个文件:candidates.erb和referrers.erb。您可以调整每个视图。

2)您可以嵌套资源

  resources :job do
    member do
      get :referrers, :candidates
    end
  end

您必须定义一个新模型并创建联合表,其中引用者和候选者都被定义为用户,但分别是不同的表引用者和候选者的一部分。

答案 1 :(得分:1)

JobsController 中创建两种不同的方法。说

def referrers
end

def cadidates
end

现在在 routes.rb 中添加新创建的方法,如

get '/j/:id', :to => 'jobs#cadidates'
get '/job/:id', :to => 'jobs#referrers'