我正在编写一个简单的Rails3应用程序,该应用程序运行在一个子网址中,除了一个问题外,它运行良好。如果我没有在任何控制器的“索引”方法的URL末尾添加“.html”扩展名,请求将返回空白页。无论我要求哪个控制器,“索引”方法总是返回完全空,包括如果我卷曲的URL。我在每个控制器中都有一个“index.html.erb”文件,它具有简单但完整的HTML,如果我在URL中包含“.html”扩展名,一切正常。下面是一些例子URL及其结果:Rails3无法正确呈现页面
http://my.application.url/appname/pages -- returns a blank page.
http://my.application.url/appname/pages.html -- returns the correct HTML page
http://my.application.url/appname/pages/new -- returns the correct HTML form
http://my.application.url/appname/pages/1 -- returns the correct HTML page
http://my.application.url/appname/pages/1/edit -- returns the correct HTML form
我的路线文件看起来与此类似:
My::Application.routes.draw do
scope "/appname" do
resources :posts
resources :pages
root :to => 'home#index'
end
end
我控制器适用部分类似于这样:
class PagesController < ApplicationController
def index
@pages = Page.all
respond_to do |format|
format.html
end
end
...
end
由于我说,索引方法是唯一有这个问题的方法。我尝试了所有我能想到的方法,包括在application.rb中添加My::Application.default_url_options = {:format => "html"}
(除了当我需要从控制器执行redirect_to时工作),并且我无所适从。该应用程序使用Thin作为应用服务器,后者在Apache 1.3后面进行代理(我不幸地无法更改,因为直接点击Thin服务器导致同样的问题,这似乎并不是问题)。任何想法将不胜感激。
刚刚确认问题不是细。 Webrick中存在同样的问题 – user1877592
不完全是答案(更多的解决方法),但是从资产管道中删除我的[controllername] .css.scss文件解决了问题。我已经使用Rails很多年了,但不幸的是我还不完全熟悉Rails 3中新的资产管道。这种行为似乎很奇怪,对我来说也有点不直观,就好像“约定配置”范式被稀释了一样。 – user1877592