2011-12-23 122 views
0

我正在尝试使一个Rails应用程序提供简单的静态HTML页面。我跟着米克尔的教程here(它涉及到制作一个页面控制器并设置一些路由),但我不断收到错误消息。Ruby on Rails匹配路由错误

我做了一个app/views/site/pages/_about.html.erb文件来包含我的关于页面。在启动rails server后,我尝试去http://localhost:3000/about/,但它给我一个路由错误,因为我有一个“未初始化的常量站点”。

My project is uploaded to GitHub如果你想看看代码。

编辑:这是我的config/routes.rb文件:

NINAgallery::Application.routes.draw do 
    match ':page_name' => 'site/pages#show' 
end 

这是我的app/controllers/pages_controller.rb文件的重要组成部分:

class PagesController < ApplicationController 

    layout 'site' 

    def show 
    @page_name = params[:page_name].to_s.gsub(/\W/,'') 
    unless partial_exists?(@page_name) 
     render 'missing', :status => 404 
    end 
    end 

    # extra code for handling 404 errors goes here 

end 
+0

它已修复! GitHub链接现在有工作代码。 – 2011-12-23 21:10:17

回答

1

site/pages#show意味着Site::PagesController

show动作你要么需要把你的控制器放在你的路由暗示的命名空间或改变路由

1

在PagesController最后一行是这样的:

ValidPartials = Site::PagesController.find_partials 

这意味着PagesController包含在网站模块中。但是你的应用中没有Site模块。

我想简单删除网站::应该解决的问题:

ValidPartials = PagesController.find_partials 

加上路线:

match ':page_name' => 'pages#show' 
1

你的应用程序被称为NINAgallery

替换Site in pages_controller.rb line 27 by NINAgallery

PS:

我只是偷看了所谓的教程。你真的非常不好的习惯。

一些资源占用非常好的基础:

如果你喜欢的教程:http://ruby.railstutorial.org/

,并有大量的关于轨道的书籍。都好。

+0

为什么这些坏习惯?我想我还不明白Ruby on Rails的美丽。 :D – 2011-12-23 21:09:13

+0

对不起,如果我一直粗鲁,但事情是:坏习惯真的很难失去,你可能会后悔。通过上面列出的链接,你很安全;) – Damien 2011-12-23 21:19:40

+0

哦,一点都不!我刚刚开始在Rails中开发,所以我仍然不知道最佳习惯。但上面的链接已经指出我的方向! :) – 2011-12-23 21:24:52

0

除了名称空间问题,您还需要将'app'Gem添加到Gemfile中,如教程中所述。

我不知道为什么你在工作代码中删除了静态页面的缓存。我做了一个拉应用程序的工作,并保持缓存问题。如果另一个人有兴趣,代码是here

也ryan贝茨有一个教程叫"Semi static pages"做了类似的事情。我鼓励你遵循他的解决方案,因为很少有人误会。

相关问题