0

我有以下问题:

我使用命令“scaffold”创建了一个实体“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

感谢 Anezio,解决了这个问题,basicament 有两个问题:

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 回答
0

访问此路由的 url

GET    /films/autocomplete_term/:term

应该

localhost.com:3000/films/autocomplete_term/a

如果你这样做localhost.com:3000/films/autocomplete_term?term=a,它会认为这是表演动作,它会忽略 ?term=a

GET    /films/:id
于 2013-05-25T12:32:05.470 回答