1

я использую (среди прочих):sitemap_generator камень создает UrlGenerationError

gem 'rails', '4.0.0' 
gem 'sitemap_generator', '3.4' 
gem "friendly_id", "~> 5.0.3" 
gem 'globalize', '~> 4.0.2' 

Карта сайта генератор должен создавать URLs для всех моих изображений:

class Image < ActiveRecord::Base 
    attr_accessible :description, :name, :size, :image, 
        :tag_ids, etc... 

    has_many :taggings, :dependent => :destroy 
    has_many :tags, :through => :taggings 
    has_and_belongs_to_many :articles 
    mount_uploader :image, ImageUploader 
    extend FriendlyId 
    friendly_id :name, use: [:slugged, :history] 
    translates :name, :description 
end 

Мой генератор карты сайта в целом работает хорошо, но не для изображения модель. Соответствующий код:

[nil, :de].each do |locale| 
    Image.find_each do |image| 
    sitemap.add image_path(image), :changefreq => 'monthly' 
    end 
end 

Теперь, когда я рейк карты сайта: обновление: no_ping

ActionController :: UrlGenerationError: нет маршрута матчей {: действие => "показать",: контроллер => "изображения ",: locale => #,: id => nil,: format => nil} missing required keys: [: id]

Мне кажется, вам может понадобиться дополнительная информация, чтобы помочь здесь, но я понятия не имею, что. Сайт работает хорошо на двух языках и грабли: маршруты дает:

images GET (/:locale)/images(.:format)  images#index {:locale=>/en|de/} 
POST (/:locale)/images(.:format)    images#create {:locale=>/en|de/} 
new_image GET (/:locale)/images/new(.:format) images#new {:locale=>/en|de/} 
edit_image GET (/:locale)/images/:id/edit(.:format) images#edit {:locale=>/en|de/} 
image GET (/:locale)/images/:id(.:format) images#show {:locale=>/en|de/} 
PATCH (/:locale)/images/:id(.:format) images#update {:locale=>/en|de/} 
PUT (/:locale)/images/:id(.:format) images#update {:locale=>/en|de/} 
DELETE (/:locale)/images/:id(.:format) images#destroy {:locale=>/en|de/} 

Наконец мой routes.rb является:

scope "(:locale)", locale: /en|de/ do 
    resources :images do 
    get 'confirm_destroy', :on => :member 
    end 
end 

ответ

0

Создание SiteMap очень просто Вот вещи, которые вы должны знать

1) маршруты

#config/routes.rb 
    get 'sitemap.xml', :to => 'sitemap#index', :defaults => {:format => 'xml'} 
    root '...' 

2) Контроллер

#app/controllers/sitemap_controller.rb 
class SitemapController < ApplicationController 
    layout nil 
    def index 
    headers['Content-Type'] = 'application/xml' 
    respond_to do |format| 
     format.xml { 
     @images = Image.all 
     } 
    end 
    end 
end 

3) вид теперь используется HAML

#app/views/sitemap/index.xml.haml 
!!! XML 
%urlset{:xmlns => "http://www.sitemaps.org/schemas/sitemap/0.9"} 
    - @images.each do |image| 
    %url 
     %loC#{image_url(image)} 
     %lastmod=image.updated_at.strftime('%Y-%m-%d') 
     %changefreq weekly 
     %priority 0.5 

Там нет ничего другого, чтобы создать карту сайта

Я надеюсь, что это помогает :)

+0

Спасибо, я постараюсь это ... кажется просто :-) – user929062

0

Проблема в том, что я должен был пройти языковой стандарт в моей sitemap.rb. Таким образом, правильный код в sitemap.rb является:

image = Image.all 

[nil, :de].each do |locale| 
    image.find_each do |image| 
    sitemap.add image_path(image, :locale => locale) 
    end 
end 
Смежные вопросы