createコントローラー内からモデルのshowpathを呼び出すのに問題があります。
Rails3.2アプリでコアラの宝石を使用しています。ユーザーが特定のレコードタイプを作成すると、Facebookのオープングラフに自動的に公開しようとしています。
必要なすべてのFBメタタグを使用してページを設定しました。
コンソールからコアラメソッドを実行でき、すべてが正常に機能します。
しかし、これをコントローラーから実行しようとすると、エラーが発生します。
私のコントローラーは次のようになります。
def create
@fb_model = current_user.fb_models.build(params[:fb_model])
if @fb_model.save
Koala::Facebook::API.new(app_token).put_connections( current_user.fb_uid, "namespace:action", :object => fb_model_url(@fb_model) )
respond_to do |format|
format.html { redirect_to(@fb_model, :notice => 'Successfully created.') }
format.xml { render :xml => @fb_model, :status => :created, :location => @fb_model }
end
else
respond_to do |format|
format.html { render :action => "new" }
format.xml { render :xml => @fb_model.errors, :status => :unprocessable_entity }
end
end
end
レコードを作成すると、ログに次のように表示されます。
Koala::Facebook::APIError (HTTP 500: Response body: {"error":{"type":"Exception","message":"Could not retrieve data from URL."}}):
テストに静的URLを使用するようにコントローラーを編集すると、すべてが正常に機能します。
...
if @fb_model.save
Koala::Facebook::API.new(app_token).put_connections( current_user.fb_uid, "namespace:action", :object => "http://myapp.com/fb_model/2" )
...
を使用して、作成コントローラー内からレコードのURLをFBに渡せないのはなぜfb_model_url(@fb_model)
ですか?