我在创建控制器中调用模型的显示路径时遇到了问题。
我在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."}}):
如果我编辑控制器以使用静态网址进行测试,一切正常。
...
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" )
...
为什么我不能使用fb_model_url(@fb_model)
从创建控制器中将记录的URL传递给FB?
答案 0 :(得分:3)
我最终走到了最底层。这实际上是一个非常令人沮丧的问题,因为没有迹象表明这是任何日志或其他地方的问题。
问题在于我在Heroku上部署/测试,并且只运行了1个web dyno。我的应用无法同时处理Facebook请求和发布/获取,导致错误。
另一个问题Facebook Open Graph from Rails Heroku已经解决了这个问题。这真的不是我期待的,我在之前的任何搜索中都没有遇到过这个问题。希望这可以帮助别人。
我通过从瘦身转向独角兽解决了这个问题。
答案 1 :(得分:0)
构建完成,您似乎不在父模型上运行。
我认为你真的想要这个:
@fb_model = current_user.fb_models.new(params[:fb_model])
你似乎两次调用@ fb_model.save这是错误的。
答案 2 :(得分:0)
感谢您发布您的调查结果 - 过去几天我一直在处理这个问题,并且不会想到这一点。那么当你只是增加你的dyno负载时,你不再有这个错误?即使我的'put_connections'回调在heroku控制台中工作,我也只是在使用Javascript SDK。