it-roy-ru.com

Как сделать канал RSS / Atom в Rails 3?

Я довольно новичок в Rails 3 и пытаюсь создать канал RSS/Atom. Я знаю о auto_discovery_link_tag , но как должен выглядеть связанный контроллер/действие?

Спасибо!

51
simonista

Auto_discovery_link_tag - хорошее начало. Быстрый поиск в Google, и я нашел сообщения в блоге на Как создать RSS-канал в Rails . Позвольте мне рассказать вам, как должен выглядеть ваш связанный контроллер/действие:

контроллеры/posts_controller.rb

def feed
    @posts = Post.all(:select => "title, author, id, content, posted_at", :order => "posted_at DESC", :limit => 20) 

    respond_to do |format|
      format.html
      format.rss { render :layout => false } #index.rss.builder
    end
end

Имя этого файла должно соответствовать контроллеру. Увидеть ниже:

просмотров/сообщений/feed.rss.builder

xml.instruct! :xml, :version => "1.0" 
xml.rss :version => "2.0" do
  xml.channel do
    xml.title "Your Blog Title"
    xml.description "A blog about software and chocolate"
    xml.link posts_url

    for post in @posts
      xml.item do
        xml.title post.title
        xml.description post.content
        xml.pubDate post.posted_at.to_s(:rfc822)
        xml.link post_url(post)
        xml.guid post_url(post)
      end
    end
  end
end

Здесь происходит вся магия Railsy. Здесь RSS-канал XML генерируется и возвращается в HTTP.

77
Matt Lennard

Использование auto_discovery_link_tag:

В контроллере:

respond_to do |format|
  format.html
  format.atom {render action: 'index', layout: false}
end
5
thatmiddleway