1

我正在尝试使用Rails Atom Feed Helper为嵌套资源生成提要。我的视图模板(index.atom.builder)是:

atom_feed(:schema_date => @favourites.first.created_at) do |feed|
  feed.title("Favourites for #{@user.login}")

  feed.updated(@favourites.first.created_at)

  @favourites.each do |favourite|
    feed.entry(favourite, :url => favourite.asset.external_ref) do |entry|
      entry.title(favourite.asset.external_ref)
      entry.content(image_tag(favourite.asset.location), :type => 'html')
      entry.author do |author|
        author.name(@user.login)
      end
    end
  end
end

我有以下路线:

  map.namespace :public do |pub|
    pub.resources :users, :has_many => [ :favourites ]
    pub.resources :favourites
    pub.resources :assets, :only => [ :show ]
  end

不幸的是,无法为 feed.entry 行生成 url:

feed.entry(favourite, :url => favourite.asset.external_ref) do |entry|

错误是“ActionView::Base 的未定义方法 `favourite_url'”。

我尝试将 feed.entry 行更改为:

feed.entry([:public, favourite], :url => favourite.asset.external_ref) do |entry|

但这会返回一个数组的条目而不是最喜欢的!有人在这里也有类似的问题。

我知道添加该行:

map.resource :favourites

我的 routes.rb 会“解决”这个问题,但这个资源只能嵌套在 /public 命名空间下。

以前有人遇到过这个问题吗?

干杯阿方

4

2 回答 2

2

只是为了跟进。根据迈克尔的建议,我传递了完整的 url 参数,这似乎为 feed.entry 行生成了正确的 url。

  @favourites.each do |favourite|
    feed.entry(favourite, :url => public_user_favourite_url(:id => favourite, :user_id => @user)) do |entry|
      entry.title(favourite.asset.external_ref)
      entry.content(image_tag(favourite.asset.location), :type => 'html')
      entry.author do |author|
        author.name(@user.zooniverse_user_id)
      end
    end
  end
于 2009-09-17T08:58:57.183 回答
1

您正在使用favourite.asset.external_ref该条目的标题,这让我相信该条目的 URL 可能应该定义为:

public_user_favourite_url(:id => favourite, :user_id => @user)

其中,如果favorite.id = 9@user.id = 1,将生成:

http://localhost:3000/public/users/1/favourites/9

这是你想要的?

于 2009-09-16T01:58:15.180 回答