在生产站点中,我有一个使用路由start#index定义的主页。
这如预期的那样起作用。
现在,一些爬虫正在扫描页面中的内容,比如/crossdomain.xml,这将触发start控制器运行,并试图返回start视图。
不幸的是,我没有定义XML视图或模板或有关它的任何内容,因此生成了错误消息(通过eMail,因此非常烦人):
[Exception] start#index (ActionView::MissingTemplate) "Missing template
start/index with {:handlers=>[:rjs, :rhtml, :builder, :rxml, :erb],
:formats=>[:xml], :locale=>[:crossdomain, :en]} in view paths所以我想有两个选择:
我更喜欢第一选择,但我不知道该怎么做?谢谢你的建议或链接到一个最佳实践。
按要求编辑,rake routes的输出。我想我在最后一行看到了一些错误吧?
new_editor_session GET /editors/sign_in(.:format) {:action=>"new", :controller=>"devise/sessions"}
editor_session POST /editors/sign_in(.:format) {:action=>"create", :controller=>"devise/sessions"}
destroy_editor_session GET /editors/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"}
/auth/:provider/callback(.:format) {:action=>"create", :controller=>"sessions"}
signout /signout(.:format) {:action=>"destroy", :controller=>"sessions"}
photo_of_week_submissions GET (/:locale)/submissions/photo_of_week(.:format) {:action=>"photo_of_week", :controller=>"submissions"}
select_photo_of_week_submission GET (/:locale)/submissions/:id/select_photo_of_week(.:format) {:action=>"select_photo_of_week", :controller=>"submissions"}
accept_submission GET (/:locale)/submissions/:id/accept(.:format) {:action=>"accept", :controller=>"submissions"}
submissions GET (/:locale)/submissions(.:format) {:action=>"index", :controller=>"submissions"}
POST (/:locale)/submissions(.:format) {:action=>"create", :controller=>"submissions"}
new_submission GET (/:locale)/submissions/new(.:format) {:action=>"new", :controller=>"submissions"}
edit_submission GET (/:locale)/submissions/:id/edit(.:format) {:action=>"edit", :controller=>"submissions"}
submission GET (/:locale)/submissions/:id(.:format) {:action=>"show", :controller=>"submissions"}
PUT (/:locale)/submissions/:id(.:format) {:action=>"update", :controller=>"submissions"}
DELETE (/:locale)/submissions/:id(.:format) {:action=>"destroy", :controller=>"submissions"}
login (/:locale)/login(.:format) {:to=>#<Proc:0x0000000103871938@/Library/Ruby/Gems/1.8/gems/actionpack-3.0.7/lib/action_dispatch/routing/mapper.rb:366>}
design (/:locale)/design(.:format) {:action=>"design", :controller=>"page"}
gallery (/:locale)/gallery(.:format) {:action=>"gallery", :controller=>"page"}
features (/:locale)/features(.:format) {:action=>"features", :controller=>"page"}
competition (/:locale)/competition(.:format) {:action=>"index", :controller=>"competition"}
facebook_albums (/:locale)/facebook-albums(.:format) {:action=>"facebook_albums", :controller=>"competition"}
facebook_photos (/:locale)/facebook-photos(.:format) {:action=>"facebook_photos", :controller=>"competition"}
facebook_upload (/:locale)/facebook-upload(.:format) {:action=>"facebook_upload", :controller=>"competition"}
root (/:locale)(.:format) {:action=>"index", :controller=>"start"}
root /(.:format) {:action=>"index", :controller=>"start"}发布于 2011-04-28 05:33:36
您可以使用路由约束,以便只接受html作为格式。这将给你第一选择。
看看这和这。
发布于 2011-04-28 14:00:44
控制器操作的响应块包含哪些内容?如果您已经离开了默认块:
respond_to do |format|
format.html { redirect_to(foobar_url) }
format.xml { head :ok }
end但是还没有定义XML模板,您将得到一个错误。删除format.xml (或者如果您只需要respond_to,您可以完全放弃respond_to块),任何对HTML之外的格式的请求都会失败。
https://stackoverflow.com/questions/5813943
复制相似问题