J'ai une fonction de blog dans mon application rails. À l'heure actuelle je n'ai que 4 blogueurs sur le site et un (assez insatisfait) façon de les acheminer comme ceci:RESTful Archivage dans Rails
map.scarlet '/scarlet.:format', :controller => 'blogs', :action => 'show', :id => 'scarlet'
map.alba '/andreasweinas.:format', :controller => 'blogs', :action => 'show', :id => 'alba'
Alors qu'ils sont bien accessibles en tapant: mysuperwebsite.com/scarlet
Maintenant, je souhaite fournir des archives pour les blogs accessibles comme ceci:
mysuperwebsite.com/scarlet/2009 - affiche toutes les entrées de 2009
mysuperwebsite.com/scarlet/2009/06 - montre toutes les entrées de juin 2009
Quelqu'un pourrait-il recommander comment a) améliorer le routage de mon blog en ayant à l'esprit qu'à l'avenir j'aurai plus de blogueurs, et b) comment acheminer les archives sans rompre les chemins? Je pense à un contrôleur d'archives?
Modèles:
# Blog.rb
class Blog < ActiveRecord::Base
has_many :entries, :dependent => :destroy
belongs_to :user
end
class Entry < ActiveRecord::Base
named_scope :published, :conditions => ["published_at < ?", Time.zone.now], :order => 'published_at DESC'
belongs_to :blog
end
Controller Blog:
def show
@blog = Blog.find_by_slug(params[:id])
@entries = @blog.entries.published, :order => 'published_at DESC'
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @blog.entries }
format.rss
end
end