Error de plantilla faltante de Rails xml.builder

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"

rutas de rastrillo:

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

rutas.rb:

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

controlador:

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.

preguntado el 27 de noviembre de 13 a las 01:11

2 Respuestas

Esto me parece mal:

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

¿No debería ser así?

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

respondido 27 nov., 13:02

Made some more changes. Let me know if that helps. - caballero farley

Still getting the same error. More info: I am on ruby 1.9.3 rails 3.2.13. Thanks. - tristan.liu

Found a solution. Updated answer and pushed example to github: github.com/farleyknight/sample_app - caballero farley

Thanks, Farley. Your app works as expected.It's weird. I used the same code to create a fresh app, which works fine. While the same code broke in my existing app. It might be some configuration issue? - tristan.liu

I tried render(:template => "miscellaneous/sitemap", :formats => [:xml], :handlers => :builder, :layout => false), but still got the same problem. - tristan.liu

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.

respondido 27 nov., 13:17

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.