RoR 3.2 で ActiveResource を使用して、次のように Shopify API から JSON 応答を取得しています。
def show
@article = Article.find(params[:id],:params => {:blog_id => params[:blog_id]})
logger.debug @article
respond_to do |format|
format.html # show.html.erb
format.json { render @article }
end
end
使用されている ActiveResource は接頭辞「blog_id」を取り、「id」は記事 ID です (記事 ID が一意であることを考えると不思議ですが、それでも)。
ロガーを使用して @article をコンソールに出力すると、次のように表示されます。
#<Article:0x465b520 @attributes={"author"=>" Shopify API", "body_html"=>"Test",
"created_at"=>"2013-06-26T06:41:12-04:00", "id"=>8204945, "published_at"=>"2013
-06-26T06:41:12-04:00", "summary_html"=>nil, "template_suffix"=>nil, "title"=>"t
est", "updated_at"=>"2013-06-26T06:41:12-04:00", "user_id"=>nil, "tags"=>""}, @
prefix_options={:blog_id=>"2812103"}, @persisted=true>
万歳!ただし、「show.html.erb」が @article をレンダリングしようとすると、何も得られません。「@article.inspect」をレンダリングすると、「nil」が返されます
これに「アクセス」するために使用されるリンクは次のとおりです。
<%= link_to 'Show', blog_article_path(@blog.id, article.id) %>
私は他のオブジェクト (ブログは 1 つ) とまったく同じ手法を使用しています。唯一の違いは、Article がネストされたリソース (「ブログ」の下) であることです。私のルートは次のとおりです。
resources :blogs do
resources :articles do
resources :metafields
end
end
私は、この 2 つの違いを立証しようとして髪をかきむしっていますが、役に立ちません。何か案は?
編集: Active Resource return nil objectに似ているようですが、答えはありません:(