2010-04-01 8 views
8

Tôi đang sử dụng AtomFeedHelper và mọi thứ đều hoạt động tốt ngoại trừ một nguồn cấp dữ liệu mà tôi cần liên kết từng mục nhập vào URL không phải là polymorphic_url mặc định cho kỷ lục.Rails AtomFeedBuilder Entry: Tùy chọn Url xuất hiện trong thẻ url nhưng không xuất hiện trong thẻ liên kết

Mỗi tài liệu tôi đã chỉ định một: url tùy chọn cho mục nhập. Điều này hiển thị chính xác một thẻ <url> trong nút nguyên tử nhưng <link rel="alternate" vẫn trỏ đến polymorphic_url mặc định. Nhìn vào nguồn và tài liệu tôi không hiểu tại sao điều này lại xảy ra.

Dưới đây là một người xây dựng ví dụ:

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 

Dưới đây là một ví dụ về một nút vấn đề:

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

Tôi muốn các giá trị href trong thẻ liên kết để phù hợp với giá trị trong thẻ url Nhưng nó không.

Khi tôi nhìn vào nguồn được liệt kê cho entry đây http://api.rubyonrails.org/classes/ActionView/Helpers/AtomFeedHelper/AtomFeedBuilder.html

Tôi giả định rằng dòng này sẽ làm việc một cách chính xác:

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

Confused. Có ai gặp phải điều này trước đây không?

Cảm ơn tất cả!

Trả lời

18

tôi thực hiện điều này bằng cách truyền: tùy chọn url trực tiếp đến phương pháp feed.entry:

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

+0

cảm ơn, tôi đã có thể sử dụng phương pháp này tương tự để thay đổi "cập nhật" và "xuất bản" thẻ cho mỗi mục nhập. – konyak