我有以下路线:
resources :tags do
collection do
get 'autocomplete', :constraints => { :format => 'js' }
end
end
我希望这只响应JS请求(它仅用于jQuery自动完成),对于常规HTML请求,我认为它应该是404响应,或者至少是重定向。
相反,所有请求都由路由转换为JS格式,因此HTML请求获取json哈希值。
这不是绝对关键,但如果我能干净地限制这条路线以便不允许HTML请求,我会更高兴。应如何处理?
答案 0 :(得分:2)
在TagsController#autocomplete
中,执行以下操作:
respond_to do |format|
# format.html { redirect_to some_path } # enable if you want to handle html requests as well
format.js
end
答案 1 :(得分:1)
你可以尝试这个(未经测试):
get 'autocomplete', :constraints => { :format => 'js' }, :defaults => {:format => nil}
然而,@ prusswan的回答是合乎逻辑的做法,并且更加明确。保持控制器薄是一件好事,但保持可读性更好
答案 2 :(得分:1)
你可以试试这个
scope format: true, constraints: { format: 'html' } do
get '/home' => 'home#index'
end