2009-07-29 7 views
1

ネストされたリソースのフィードを生成するのにRails Atom Feed Helperを使用しようとしています。アトムフィードヘルパーを使用したネストされたリソース

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 

そして私は、次のルートを持っている:私のビューテンプレート(index.atom.builder)がある

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

は、残念ながら、urlはfeed.entryラインのために生成するのに失敗しています

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| 

しかし、これは配列ではなく、好きなのエントリを返します!誰かが同様の問題を抱えていたhere also

私は、行を追加することを知っている:私のroutes.rbをし

map.resource :favourites 

すると、この問題を「解決」だろうが、このリソースは、/公共の名前空間の下にネストされてのみ使用可能です。

誰もこの問題を以前に持っていましたか?

favorite.id = 9とあれば
public_user_favourite_url(:id => favourite, :user_id => @user) 

:あなたはそのエントリのURLを信じるために私を残したエントリのタイトルとしてfavourite.asset.external_refを使用している Arfon

答えて

1

は、おそらくのように定義されなければならない

乾杯@user.id = 1は、以下を生成します:

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

これはあなたが探しているものですか?

+0

ありがとうございました!私はどのように私はそのオプションを逃したか分からない:-) – arfon

3

フォローアップしてください。 Michaelの提案に基づいて、私は完全な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 
関連する問題