2010-04-01 38 views
8

Estoy usando AtomFeedHelper y todo funciona bien excepto en una fuente donde necesito vincular cada entrada a una URL que no es la predeterminada polymorphic_url para el record.Entrada Rails AtomFeedBuilder: la opción Url aparece en la etiqueta url, pero no en la etiqueta

Según la documentación, he especificado una opción: url para la entrada. Esto representa correctamente una etiqueta <url> en el nodo átomo pero el <link rel="alternate" aún apunta al valor predeterminado polymorphic_url. Al mirar la fuente y la documentación, no entiendo por qué sucede esto.

He aquí un constructor de ejemplo:

atom_feed do |feed| 
    feed.title("Reports") 
    feed.updated(@reports.first.created_at) 
    for report in @reports 
    content = report.notes 

    feed.entry(report) do |entry| 
     entry.title(report.title) 
     entry.content(content, :type => 'html') 
     entry.url("http://myhost/page/") 
     entry.updated(report.updated_at.strftime("%Y-%m-%dT%H:%M:%SZ")) 
     entry.author do |author| 
     author.name(report.user.username) 
     end 
    end 
    end 

end 

He aquí un ejemplo de un nodo problema:

<entry> 
    <id>tag:myhost.mydomain.com,2005:SiteReport/2</id> 
    <published>2010-03-30T13:11:07-07:00</published> 
    <updated>2010-03-30T13:11:07-07:00</updated> 
    <link rel="alternate" type="text/html" href="http://myhost/site_reports/2"/> 
    <title>Test Title</title> 
    <content type="html">Test Content</content> 
    <url>http://myhost/page/</url> 
    <updated>2010-03-30T13:11:07Z</updated> 
    <author> 
     <name>Author</name> 
    </author> 
    </entry> 

Quiero el valor href en la etiqueta de enlace para que coincida con el valor de la etiqueta del URL pero no es así

Cuando miro a la fuente de la lista para la entrada aquí http://api.rubyonrails.org/classes/ActionView/Helpers/AtomFeedHelper/AtomFeedBuilder.html

Me asumir que esta línea funcionaría correctamente:

@xml.link(:rel => 'alternate', :type => 'text/html', :href => options[:url] || @view.polymorphic_url(record)) 

confundido. ¿Alguien encontró esto antes?

¡Gracias a todos!

Respuesta

18

he logrado esto pasando la opción: url directamente al método feed.entry:

feed.entry(report, :url => report_url(report.slug)) do |entry|

+0

gracias, yo era capaz de utilizar este mismo método para cambiar las etiquetas y "publicado" "actualizados" para cada entrada también. – konyak

Cuestiones relacionadas