1

1つの問題を除いてうまく機能するサブURLで実行される単純なRails3アプリケーションを作成しています。どのコントローラーの「index」メソッドのURLの最後に「.html」拡張子を追加しないと、リクエストは空白のページを返します。どのコントローラーを要求するかは関係ありません。「index」メソッドは、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

私が言ったように、インデックスメソッドはこの問題を抱えている唯一のものです。application.rb(コントローラーからredirect_toを実行する必要がある場合を除いて機能します)を追加するなど、考えられるすべてのことを試しMy::Application.default_url_options = {:format => "html"}ましたが、途方に暮れています。このアプリは、Apache 1.3の背後でプロキシされるアプリケーションサーバーとしてThinを使用しています(残念ながら変更できません。Thinサーバーに直接アクセスすると同じ問題が発生するため、これは問題にはならないようです)。どんなアイデアでも大歓迎です。

4

1 に答える 1

0

したがって、URLで.html拡張子が指定されていない場合、アプリケーションは、少なくとも開発環境で実行している間は、コントローラーと同じ名前のアセットを(アセットパイプラインから)提供するというのが答えのようです。アセットフォルダーからコントローラーを作成したときに自動生成された[controllername].css.scssファイルと[controllername].js.coffeeファイル(どちらも未使用)を削除すると、アプリケーションは正しく機能しました。キックのためだけに、それらをそのままにして実行しようとしましたrake assets:precompileが、ファイルが実際に削除されるまで動作は持続しました。これはまだ直感に反しているようで、私はこれをバグとして提出することを考えています。

于 2012-12-05T15:58:00.320 に答える