0

私のパブリックコントローラーには次のものがあります。

  def index
    @super =  "test"
     respond_to do |format|
      format.html
      format.js
    end
  end

index.js.erbviews/public フォルダーに index アクション用のを作成しました。

でも訪れた時はhttp://localhost:3000/.js

私は得るNo route matches [GET] "/.js"

これは、古いバージョンのレールで以前に機能していました...

4

2 に答える 2

2

これはまさに正確な質問で、1 年前にここで尋ねられました。質問者は結論に達しました、そして私は引用します

さて、これはおそらく Rails チームが「/.atom」のような URL を思いとどまらせるために意図的に行ったことであると判断しました (なぜなら、それは起こるべきことのように見えるからです)。 2 番目のルート (get "latest", :action => :index) は URL 形式 ("/latest.atom" など) の代わりに使用します。

質問から、3.0 と 3.1 の間で何かが起こったようです。

一時的な解決策として、さらに深く掘り下げてから削除rootroutes.rb、 this を追加する必要がありget "/(.:format)" instead, to: "public#index"ます。これはうまくいくはずです。

編集

うん、それはこのコミットに関連している可能性があります。

API、ルートのリストに追加するために使用することをroot明確に示しています。はスラッシュで終わるので、... ドットを接続します。コミットは、で終わるルートの形式はないと言っています。match/root/

|| path.end_with?('/')から追加 ( ) を削除し、フォーマットactionpack/lib/action_dispatch/routing/mapper.rbを使用できるようになりました。root

于 2013-01-24T18:26:02.723 に答える
0

root_path ヘルパーへのすべての呼び出しを中断しないようにするには、ルートを置き換えます。

root :to => 'public#index'

と:

get '/(.:format)' => 'public#index', :as => :root
于 2013-07-26T18:06:48.797 に答える