首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用所有XML视图

禁用所有XML视图
EN

Stack Overflow用户
提问于 2011-04-28 05:16:45
回答 2查看 615关注 0票数 4

在生产站点中,我有一个使用路由start#index定义的主页。

这如预期的那样起作用。

现在,一些爬虫正在扫描页面中的内容,比如/crossdomain.xml,这将触发start控制器运行,并试图返回start视图。

不幸的是,我没有定义XML视图或模板或有关它的任何内容,因此生成了错误消息(通过eMail,因此非常烦人):

代码语言:javascript
复制
[Exception] start#index (ActionView::MissingTemplate) "Missing template
start/index with {:handlers=>[:rjs, :rhtml, :builder, :rxml, :erb],
:formats=>[:xml], :locale=>[:crossdomain, :en]} in view paths

所以我想有两个选择:

  • 禁用此应用程序中的所有XML/JSON,并呈现默认404页。
  • 创建一个虚拟XML视图。

我更喜欢第一选择,但我不知道该怎么做?谢谢你的建议或链接到一个最佳实践。

按要求编辑rake routes的输出。我想我在最后一行看到了一些错误吧?

代码语言:javascript
复制
            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"}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-28 05:33:36

您可以使用路由约束,以便只接受html作为格式。这将给你第一选择。

看看

票数 1
EN

Stack Overflow用户

发布于 2011-04-28 14:00:44

控制器操作的响应块包含哪些内容?如果您已经离开了默认块:

代码语言:javascript
复制
respond_to do |format|
  format.html { redirect_to(foobar_url) }
  format.xml  { head :ok }
end

但是还没有定义XML模板,您将得到一个错误。删除format.xml (或者如果您只需要respond_to,您可以完全放弃respond_to块),任何对HTML之外的格式的请求都会失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5813943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档