2

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)ですか?

4

3 に答える 3

3

私は最終的にこれの底にたどり着きました。ログや他の場所でこれが問題であることを示す兆候がないため、実際には非常にイライラする問題です。

問題は、Heroku でデプロイ/テストを行っていて、Web dyno が 1 つしか実行されていなかったことです。私のアプリは Facebook リクエストと投稿/取得の両方を同時に処理できず、エラーが発生しました。

これは、別の質問Facebook Open Graph from Rails Herokuで対処されています。それは本当に私が期待していたものではなく、以前の検索ではこの質問に出くわしませんでした. うまくいけば、これは他の誰かを助けることができます.

シンからユニコーンに切り替えることで問題を解決しました。

于 2012-05-06T12:06:26.957 に答える
0

親モデルが保存されるとビルドが終了し、親で操作していないようです。

私はあなたが実際にこれを望んでいると思います:

@fb_model = current_user.fb_models.new(params[:fb_model])

また、 @fb_model.save を2回呼び出しているようですが、これは間違っています。

于 2012-05-03T10:21:49.040 に答える