2

我无法从创建控制器中调用模型的显示路径。

我在 Rails 3.2 应用程序中使用 Koala gem。当用户创建特定记录类型时,我正在尝试自动发布到 Facebook 的开放图表。

我有一个页面设置了所有必需的 FB 元标记。

我可以从控制台运行 Koala 方法,一切正常。

但是,如果我尝试从控制器运行它,我会收到错误消息。

我的控制器如下所示:

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" ) 
  ...

为什么我不能使用 create 控制器将记录的 url 传递给 FB fb_model_url(@fb_model)

4

3 回答 3

3

我最终明白了这一点。这实际上是一个非常令人沮丧的问题,因为没有迹象表明这是任何日志或其他地方的问题。

问题是我在 Heroku 上部署/测试,并且只运行了 1 个 web dyno。我的应用程序无法同时处理 Facebook 请求和 post/get,从而导致错误。

这已在Rails Heroku 的 Facebook Open Graph的另一个问题中得到解决。这真的不是我所期望的,而且我在之前的任何搜索中都没有遇到这个问题。希望这可以帮助别人。

我通过从瘦切换到独角兽解决了这个问题。

于 2012-05-06T12:06:26.957 回答
0

保存父模型时构建已完成,并且您似乎没有在父模型上进行操作。

我认为你实际上想要这个:

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

此外,您似乎两次调用 @fb_model.save 是错误的。

于 2012-05-03T10:21:49.040 回答
0

感谢您发布您的发现——过去几天我一直在处理这个问题,但没想到这一点。所以当你简单地增加你的测功机负载时,你不再有这个错误了吗?即使我的“put_connections”回调在 heroku 控制台中工作,我也即将使用 Javascript SDK。

于 2012-05-10T23:08:20.133 回答