2010-04-01 17 views
8

Używam AtomFeedHelper i wszystko działa poprawnie, z wyjątkiem jednego kanału, w którym muszę połączyć każdy wpis z adresem URL, który nie jest domyślnym polymorphic_url dla rekord.Rails AtomFeedBuilder Entry: Opcja adresu URL pojawia się w tagu url, ale nie w tagu linku

Zgodnie z dokumentacją podałem opcję: URL dla wpisu. To poprawnie renderuje znacznik <url> w węźle atomu, ale <link rel="alternate" nadal wskazuje na domyślną wartość polymorphic_url. Patrząc na źródło i dokumentację, nie rozumiem, dlaczego tak się dzieje.

Oto przykład budowniczy:

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 

Oto przykład węzła problem:

<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> 

Chcę wartość href w tagu link dopasować wartość w tagu url ale tak nie jest.

Kiedy patrzę na źródła wymienionego na wejściu tutaj http://api.rubyonrails.org/classes/ActionView/Helpers/AtomFeedHelper/AtomFeedBuilder.html

Chciałbym założyć, że ta linia będzie działać poprawnie:

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

zmieszany. Czy ktoś już to wcześniej napotkał?

Dzięki!

Odpowiedz

18

I dokonał tego poprzez przepuszczenie opcji: url bezpośrednio do sposobu feed.entry:

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

+0

dzięki, udało mi się skorzystać z tej samej metody, aby zmienić „aktualizowane” i „opublikował” tagi także dla każdego wpisu. – konyak