我有一个非常典型的博客网站,其中包含按日期组织的帖子和信息页面,这些页面按标题任意组织。主要博客部分(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。提前谢谢。
答案 0 :(得分:2)
你似乎对layout的概念感到困惑。简而言之,application.html.erb
文件夹中的views/layouts/
文件是一个布局文件,用于定义应用程序内容的显示方式。并且没有一种称为application#index
的东西。
比较您的两个应用posts
和pages
,它们都具有相同的布局,因为它们都使用application.html.erb
作为布局但内容不同(posts
会显示您的帖子和pages
将显示页面)
希望这有帮助