我正在尝试创建一个提供简单静态HTML页面的Rails应用程序。我按照Mikel的教程here(它涉及制作一个Pages控制器并设置一些路由)但我不断收到错误信息。
我制作了一个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 :(得分:1)
site/pages#show
表示Site::PagesController
您需要将控制器放在路径所暗示的命名空间中或更改路径
答案 1 :(得分:1)
PagesController中的最后一行是:
ValidPartials = Site::PagesController.find_partials
这意味着PagesController包含在Site模块中。但是您的应用中没有Site模块。
我认为简单删除Site ::应该解决问题:
ValidPartials = PagesController.find_partials
加上路线:
match ':page_name' => 'pages#show'
答案 2 :(得分:1)
您的应用程序称为NINAgallery
。
将Site
第27行中的pages_controller.rb
替换为NINAgallery
。
PS:
我刚刚看了一眼所谓的教程。你的习惯真的很糟糕。
一些非常好的基础资源:
如果你喜欢教程:http://ruby.railstutorial.org/
还有很多关于铁轨的书籍。一切都好。
答案 3 :(得分:0)
除了名称空间问题之外,您还需要将“app”Gem添加到Gemfile中,如教程中所述。
我不知道为什么你删除了工作代码中静态页面的缓存。我在应用程序工作并维护缓存问题时提出了拉取请求。如果其他人感兴趣,则代码为here
ryan bates也有一个名为"Semi static pages"的教程,它做了类似的事情。我鼓励你遵循他的解决方案,因为很少有人误解。