帮助为静态页面创建路径和控制器

时间:2011-05-24 23:21:06

标签: ruby-on-rails ruby-on-rails-3 routes

我有一些静态页面,我试图像团队一样,关于我们,服务条款等等。

我正在尝试让一个控制器处理静态页面,但我缺少一些技术诀窍。

这是我做的:

在routes.rb中,在结束之前我添加了这个:

match "/:action" => "pages"

然后我创建了一个名为pages_controller.rb的控制器

目前它是空的。我需要做的是识别/ pages / team或pages / about_us等请求并重定向到正确的静态页面。我怎么能这样做?

谢谢!

2 个答案:

答案 0 :(得分:5)

我就是这样做的:

match '/pages/:page' => "pages#page"

然后基于params[:page]我渲染不同的静态视图。 对于静态页面数量较少的网站,这对我有用。

当然,您可以明确命名您的路线:

match '/about-us' => "pages#about_us"

然后为Pages控制器中的每个路由声明一个空方法:

def about_us
end

但我更喜欢第一种方式。

答案 1 :(得分:0)

另一种可能的方法是在路线的底部放置这样的东西:

map.connect'* path',: controller => '您的单个控制器名称',:action => '显示'

* path基本上表示要选择上面路线声明中尚未涵盖的任何内容。

我很确定:action => 'show'表示完全跳过控制器(因此不需要空控制器方法),只需在与控制器相同的路径中呈现具有相同名称的模板。

我甚至让它与子目录一起工作......

app / views /您的单个控制器名称/ some-new-subdir / foo.html.erb例如会找到该路线的匹配项:

http://example.com/some-new-subdir/foo