我有一个非常典型的博客站点,其中包含按日期组织的帖子和按标题任意组织的信息页面。主博客部分 ( 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。提前致谢。