在rails中每个视图模板需要一个控制器操作吗?

时间:2014-10-01 14:54:42

标签: ruby-on-rails model-view-controller controller

我是ROR的新手,我目前正在构建一个简单的平台应用程序,用户可以登录仪表板并注册服务。现在我有几个页面仅供用户使用,例如欢迎页面或how_to页面。我想限制访问这些页面只能在用户登录后访问。

我的问题是,我是否需要在UserController中单独执行操作,以显示这些视图模板的链接?例如

class UsersController < ApplicationController


    def welcome
    end

    def howto
    end
end

这是我的路线档案。

resources :users
resources :sessions, only: [:new,:create,:destroy]

root 'main#index'
match '/pro', to: 'main#pro', via:'get'


match '/signup',  to: 'users#new',            via: 'get'
match '/signin',  to: 'sessions#new',         via: 'get'
match '/signout', to: 'sessions#destroy',     via: 'delete'

编辑:

好吧我想我现在开始拍照了。在我的情况下,同一个视图模板没有条件内容,仪表板模板的布局和结构与我的公共视图模板完全不同。我可以限制访问我的整个控制器,这需要用户在查看之前登录。我的问题仍然存在。如果我只为授权用户提供了一堆视图模板,我是否需要在受限制的控制器中为每个模板创建一个新操作?

1 个答案:

答案 0 :(得分:0)

您可以对所有页面使用一个操作,并编写如下内容:

get "/:page" => "user#page", constraints: { page: /welcome|about/ }

然后在你的控制器中:

def page
  render params[:page]
end