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

フォローアップするだけです。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
于 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 に答える