gpt4 book ai didi

ruby-on-rails - 使用 Ruby on Rails 4 制作 sitemap.xml

转载 作者:数据小太阳 更新时间:2023-10-29 06:59:04 25 4
gpt4 key购买 nike

我正在尝试为我的 Ruby on Rails 4 应用程序制作站点地图。我会使用这样的 gem dynamic_sitemaps但我不能将它与 Heroku 一起使用,所以我环顾四周,找到了这个教程:http://meghagulati.com/2013/12/05/sitemap-xml-on-heroku-with-ruby-on-rails/自己做(稍作改动)但是当我访问 myapp.com/sitemap.xml 时出现此错误,我希望有人能帮助我找到错误。

ActionController::UnknownFormat in SitemapsController#index ActionController::UnknownFormat 提取的源代码(大约第 7 行):respond_to do |format|

#app/controllers/sitemaps_controller.rb
class SitemapsController < ApplicationController
def index
@static_pages = [root_url]
@movies = Movie.all
respond_to do |format|
format.xml
end
@series = Series.all
respond_to do |format|
format.xml
end
end
end

#app/views/sitemaps/index.xml.builder
base_url = "http://#{request.host_with_port}"
xml.instruct! :xml, :version=>'1.0'
xml.tag! 'urlset', 'xmlns' => 'http://www.sitemaps.org/schemas/sitemap/0.9' do
xml.url{
xml.loc("http://myapp.com")
xml.changefreq("weekly")
xml.priority(1.0)
}
xml.url{
xml.loc("http://myapp.com/movies")
xml.changefreq("daily")
xml.priority(0.9)
}
xml.url{
xml.loc("http://myapp.com/series")
xml.changefreq("daily")
xml.priority(0.9)
}
@movies.each do |movie|
xml.url {
xml.loc "#{movie_url(movie)}"
xml.lastmod movie.updated_at.strftime("%F")
xml.changefreq("weekly")
xml.priority(0.5)
}
end
@series.each do |series|
xml.url {
xml.loc "#{series_url(series)}"
xml.lastmod series.updated_at.strftime("%F")
xml.changefreq("weekly")
xml.priority(0.5)
}
end
end

#config/routes.rb
resources :sitemaps, :only => :index
get "sitemap.xml" => "sitemaps#index", format: :xml, as: :sitemap

最佳答案

首先,你respond_to只能被调用一次,所以你需要改变你的 Controller 方法,例如:

class SitemapsController < ApplicationController
def index
@static_pages = [root_url]

@movies = Movie.all
@series = Series.all

respond_to do |format|
format.xml
end
end
end

当您访问以下 URL 时,此更改应在您的浏览器中呈现一个 XML 文件:

http://lvh.me:3000/sitemaps.xml

此外,您需要更改路由规范并使用字符串作为格式而不是符号,即将 :xml 更改为 "xml":

  get "sitemap.xml" => "sitemaps#index", :format => "xml", :as => :sitemap

访问以下 URL 时,您应该会在浏览器中看到相同的 XML 文件:

http://lvh.me:3000/sitemap.xml

(lvh.me 解析为本地主机)

关于ruby-on-rails - 使用 Ruby on Rails 4 制作 sitemap.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23849353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com