我正在编写一个在子 URL 中运行的简单 Rails3 应用程序,除了一个问题外,它运行良好。如果我没有在任何控制器的“index”方法的 URL 末尾添加“.html”扩展名,则请求将返回一个空白页面。我请求哪个控制器并不重要,“索引”方法总是返回完全空的,包括如果我卷曲 URL。我在每个控制器中都有一个“index.html.erb”文件,带有简单但完整的 HTML,如果我在 URL 中包含“.html”扩展名,一切正常。以下是一些示例 URL 及其结果:
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
正如我所说,索引方法是唯一有这个问题的方法。我已经尝试了所有我能想到的东西,包括添加My::Application.default_url_options = {:format => "html"}
application.rb (除非我需要从控制器执行 redirect_to ,否则我很茫然。该应用程序使用 Thin 作为 Apache 1.3 后面的应用程序服务器(很遗憾,我无法更改,这似乎不是问题,因为直接访问 Thin 服务器会导致同样的问题)。任何想法将不胜感激。