1
votes

Error: Template is missing

Missing template miscellaneous/sitemap, application/sitemap with {:locale=>[:en], :formats=>[:xml], :handlers=>[:erb, :builder]}. Searched in: * "/Users/yliu/Google Drive/ruby projects/Blog/lenswish/app/views" * "/usr/local/rvm/gems/ruby-1.9.3-p194/bundler/gems/twitter-bootstrap-rails-4b8a511e6518/app/views" * "/usr/local/rvm/gems/ruby-1.9.3-p194/gems/devise-3.1.0/app/views"

rake routes:

GET      /sitemap.xml(.:format)                 miscellaneous#sitemap {:format=>"xml"}

routes.rb:

get "sitemap.xml", :to => "miscellaneous#sitemap", defaults: { format: "xml" }

controller:

class MiscellaneousController < ApplicationController
  def sitemap
    @card_templates = CardTemplate.all
    respond_to do |format|
      format.xml
    end
  end
end

Template position: app/views/miscellaneous/sitemap.xml.builder

content in template sitemap.xml.builder:

# Sitemaps 0.9 XML format: http://www.sitemaps.org/protocol.php
xml.instruct!
xml.urlset :xmlns => 'http://www.sitemaps.org/schemas/sitemap/0.9' do
  xml.url do
    xml.loc root_url
    xml.changefreq 'daily'
    xml.lastmod @card_templates.first.updated_at.iso8601
    xml.priority '0.8'
  end
end

I already checked file permission issues. Still not working. Anyone help please. Thanks in advance.

2

2 Answers

0
votes

This looks wrong to me:

GET      /sitemap.xml(.:format)                 miscellaneous#sitemap {:format=>"xml"}

Shouldn't it be like this?

GET      /sitemap(.:format)                 miscellaneous#sitemap {:format=>"xml"}

I would change your route to:

get "sitemap", :to => "miscellaneous#sitemap"

Your controller code should look about the same

class MiscellaneousController < ApplicationController
  def sitemap
    @card_templates = CardTemplate.all
    respond_to do |format|
      format.xml
    end
  end
end
0
votes

This turns out to be an IDE issue, the file name I saw from the textmate ui differs from what I saw from the terminal. Fixed after I renamed the file.