繁体   English   中英

Ruby on Rails匹配路由错误

[英]Ruby on Rails match routing error

我正在尝试制作一个提供简单静态HTML页面的Rails应用程序。 在这里遵循了Mikel的教程(涉及制作Pages控制器并设置一些路由),但是我一直收到错误消息。

我制作了一个app/views/site/pages/_about.html.erb文件来包含我的“关于”页面。 启动rails server ,我尝试转到http://localhost:3000/about/但是由于我有一个“未初始化的常量站点”,因此出现了路由错误。

如果您想看一下代码, 我的项目将上传到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

site/pages#show表示Site::PagesController的show操作

您要么需要将控制器放在路由所暗示的名称空间中,要么更改路由

PagesController中的最后一行是这样的:

ValidPartials = Site::PagesController.find_partials

这意味着PagesController包含在Site模块中。 但是您的应用程序中没有Site模块。

我认为简单删除Site ::应该可以解决问题:

ValidPartials = PagesController.find_partials

加上路线:

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

您的应用程序称为NINAgallery

更换Sitepages_controller.rb一行27 NINAgallery

PS:

我只是偷看了所谓的教程。 您正在养成非常非常不好的习惯。

一些非常好的基础知识:

如果您喜欢教程,请访问: http : //ruby.railstutorial.org/

并且有很多关于铁轨的书籍。 都好。

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

我不知道为什么在工作代码中删除了静态页面的缓存。 我在应用程序正常工作并维护缓存问题时发出了请求请求。 如果其他人有兴趣,代码在这里

瑞安·贝茨(ryan bates)也有一个名为“半静态页面”的教程,该教程具有类似功能。 我鼓励您遵循他的解决方案,因为很少会出错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM