Rails控制器渲染错误视图

时间:2013-06-03 18:54:47

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

我有一个非常典型的博客网站,其中包含按日期组织的帖子和信息页面,这些页面按标题任意组织。主要博客部分(posts#index)正常呈现,但pages#index似乎正在呈现顶级模板(与root路由相同),就像{{1}一样}规则未被正确检测。

我知道他们都使用相同的布局(match '/info')。但是,虽然application.html.haml路线正在正确显示/posts模板,但posts/index.html.haml路线似乎正在退回,在显示/pages时显示application/index.html.haml

没有控制器明确定义pages/index.html.haml操作。我不确定这是否是问题的一部分,但为什么index可以正常工作而posts#index没有?

routes.rb中:

pages#index

控制器:

Foo::Application.routes.draw do
    root :to => 'application#index'
    match '/blog' => 'posts#index'
    match '/info' => 'pages#index'
end

...和观点:

# application_controller.rb
class ApplicationController < ActionController::Base
  def show_tag
    @tag = params[:tag]
  end
end

# posts_controller.rb
class PostsController < ApplicationController
    def show
        @date = params[:date] 
    end
end

# pages_controller.rb
class PagesController < ApplicationController
    def show
        @title = params[:title]
    end
end

我正在运行Rails 3.2.13和Ruby 1.9.3。提前谢谢。

1 个答案:

答案 0 :(得分:2)

你似乎对layout的概念感到困惑。简而言之,application.html.erb文件夹中的views/layouts/文件是一个布局文件,用于定义应用程序内容的显示方式。并且没有一种称为application#index的东西。

比较您的两个应用postspages,它们都具有相同的布局,因为它们都使用application.html.erb作为布局但内容不同(posts会显示您的帖子和pages将显示页面)

希望这有帮助