0

次の問題があります。

コマンド「scaffold」で1つのエンティティ「Film」を作成し、ルートファイル「resources:films」に自動的に追加してから、ajaxを介してオートコンプリートを追加しようとしましたが、呼び出し元のajaxは常に代わりに「show」アクションを呼び出します「autocomplete_term」を追加したルートを呼び出します

マイ ルート ファイル (routes.rb)

resources :films

次の可能性を試しました(routes.rb)

match 'films/autocomplete_term' => "films#index", :via=>:get
match "films/autocomplete_term/:term" => "films#autocomplete_term",    :controller=>"films", :action=>"autocomplete_term", :as => :films_autocomplete, :via => :get
resources :films do
  collection do
    get 'autocomplete_term'
  end
end

ルート

** localhost.com:3000/films/autocomplete_term?term=a**

エラー

id=autocomplete_term のフィルムが見つかりませんでした

app/controllers/films_controller.rb:28:in `show'

コマンド rake routes を実行すると

  GET    /films/autocomplete_term/:term(.:format) films#autocomplete_term
  films_autocomplete 
  GET    /films/autocomplete_term/:term(.:format) films#autocomplete_term

autocomplete_term_films GET /films/autocomplete_term(.:format) フィルム #autocomplete_term

私の英語でごめんなさい

そして、前もって感謝します

4

2 に答える 2

0

このルートにアクセスするための URL

GET    /films/autocomplete_term/:term

する必要があります

localhost.com:3000/films/autocomplete_term/a

これを行うlocalhost.com:3000/films/autocomplete_term?term=aと、それが show アクションであると見なされ、?term=a は無視されます。

GET    /films/:id
于 2013-05-25T12:32:05.470 に答える
0

問題を解決した Anezio のおかげで、basicament には 2 つの問題がありました。

1 - ルート

match "films / autocomplete_term /: term"

2: routes.rb ファイルの順序 (Rails ルートは、指定された順序で照合されます)

resources: films
match 'films / autocomplete_term /: term' => "films # autocomplete_term"

最終的な解決策: (routes.rb)

match 'films / autocomplete_term' => "films # autocomplete_term"
resources: films
于 2013-05-25T14:22:14.463 に答える