0

我有一个非常典型的博客站点,其中包含按日期组织的帖子和按标题任意组织的信息页面。主博客部分 ( posts#index) 渲染良好,但pages#index似乎正在渲染顶级模板(与root路由相同),好像match '/info'没有正确检测到规则。

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

没有控制器明确定义index动作。我不确定这是否是问题的一部分,但为什么不能posts#index正常工作pages#index

路线.rb:

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

...和意见:

# layouts/index.html.haml
!!!
%html
  %head
    %title Foo
    %meta{:charset => "utf-8"}
    %meta{"http-equiv" => "X-UA-Compatible", :content => "IE=edge,chrome=1"}
    %meta{:name => "viewport", :content => "width=device-width, initial-scale=1, maximum-scale=1"}
    = stylesheet_link_tag :application, :media => "all"
    = javascript_include_tag :application
    = csrf_meta_tags
  %body
    #container.container
      %header
        %h1
          = link_to("Home", root_path)
      #main{:role => "main"}
        = yield
      %footer

# application/index.html.haml
%p
  %a{:href => 'blog'} Blog
%p
  %a{:href => 'info'} Info

# posts/index.html.haml
%p List of blog posts
%ul
    %li
        %a{:href => 'blog/6-1'} June 1st
    %li
        %a{:href => 'blog/6-2'} June 2nd

# pages/index.html.haml
%p Info about stuff
%ul
    %li
        %a{:href => 'info/foo'} Foo
    %li
        %a{:href => 'info/bar'} Bar

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

4

1 回答 1

2

您似乎对布局的概念有些困惑。简而言之,application.html.erb文件views/layouts/夹中的文件是一个布局文件,它定义了应用程序内容的显示方式。而且没有这种东西叫做application#index.

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

希望这可以帮助

于 2013-06-03T19:12:23.633 回答