1

奇妙な問題があります。CRUDなどを作成するために足場付きのレールを使用していました。次に、テーブル エントリの数を表示する cnt という関数を追加しました。たとえば、暗号の Albums.count です。しかし今朝、ルーティング全体がそのページに向けられていました。xxx/elements にアクセスしようとすると、do /cntalbums にリンクされました。

ルーティングのように見えました-これは私のroutes.rbです:

Something::Application.routes.draw do
  resources :albums
  get "home/index"
  resources :elements
  root :to => 'home#index'
end

それで全部です。cnt のビューを削除し、albums_controller にあるメソッドを削除しました。そのため、cnt が実装されている場所はありません。それでも、すべての GET がそのページにリンクしているようです。ログでこれを取得しました:

Started GET "/albums" for xxxx at Fri Oct 05 09:54:42 +0200 2012
Processing by AlbumsController#cnt as HTML
Parameters: {"cntalbums"=>"albums"}
Completed 500 Internal Server Error in 47ms

ActionView::MissingTemplate (Missing template albums/cnt, application/cnt with {:formats=>[:html], :locale=>[:en], :handlers=>[:erb, :builder]}. Searched in:
* "/kunden/nnax.de/webseiten/entwicklung/poezy/app/views"
):
 app/controllers/albums_controller.rb:18:in `cnt'

私が持っていた:

match ':cntalbums' => 'albums#cnt', :as => 'cnt_albums', :via => :get

前; しかし、私はすでにそれを削除しました。そのため、アルバムや要素などが表示されない理由がわかりません。最後に: rake routes は次のことを教えてくれます:

albums GET    /albums(.:format)            albums#index
         POST   /albums(.:format)            albums#create
new_album GET    /albums/new(.:format)        albums#new
edit_album GET    /albums/:id/edit(.:format)   albums#edit
     album GET    /albums/:id(.:format)        albums#show
         PUT    /albums/:id(.:format)        albums#update
         DELETE /albums/:id(.:format)        albums#destroy
elements GET    /elements(.:format)          elements#index
         POST   /elements(.:format)          elements#create
new_element GET    /elements/new(.:format)      elements#new
 edit_element GET    /elements/:id/edit(.:format) elements#edit
   element GET    /elements/:id(.:format)      elements#show
         PUT    /elements/:id(.:format)      elements#update
         DELETE /elements/:id(.:format)      elements#destroy
    home_index GET    /home/index(.:format)        home#index
    root        /                            home#index

私の理解では、それは明らかです。アルバムや要素に移動したいのですが、フィッティング コントローラーの機能に入ります。しかし、常に AlbumsController#cnt に到達しようとします

その機能はもう存在しませんが

ヒントはありますか?:/

4

2 に答える 2

0

Rails ルートは先着順でルーティングされるため、CNT ルールが何よりも優先される場合、Rails はそれをルーティングします。ルールを見てみると

match ':cntalbums' => 'albums#cnt', :as => 'cnt_albums', :via => :get

どの URL もこれに一致することに注意してください。パス/hello/worldは になり:cntalbums => "hello/world"ます。

ルートからラインを削除したのに、まだそれによってルーティングされている場合、Rails サーバーを再起動したことは確かですか? (ブラウザのキャッシュをクリアしてみるのもいいかもしれませんが、実際には問題にはなりません)

于 2012-10-05T08:28:08.300 に答える
0

これを試して

Something::Application.routes.draw do
 resources :albums
 ...
 match ':cntalbums' => 'albums#cnt', :as => 'cnt_albums', :via => :get
 ...
 get "home/index"
 resources :elements
 root :to => 'home#index'
end

鉄道路線は先着順なので

于 2012-10-05T08:33:41.820 に答える