Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Facebook FBML请求不发送mime类型?_Ruby On Rails_Facebook - Fatal编程技术网

Ruby on rails Facebook FBML请求不发送mime类型?

Ruby on rails Facebook FBML请求不发送mime类型?,ruby-on-rails,facebook,Ruby On Rails,Facebook,我想在我的Rails应用程序中响应不同的格式: respond_to do |format| logger.info "in main format block, request.format.fbml? = #{request.format.fbml?}" format.html # index.html.erb format.fbml # index.fbml.erb end 这很简单。如果facebook请求页面,则返回.fbml.erb文件,否则返回.html.erb

我想在我的Rails应用程序中响应不同的格式:

respond_to do |format|
   logger.info "in main format block, request.format.fbml? = #{request.format.fbml?}"
   format.html # index.html.erb
   format.fbml # index.fbml.erb
end
这很简单。如果facebook请求页面,则返回.fbml.erb文件,否则返回.html.erb文件

我的应用程序知道从layouts目录而不是main.html.erb发送main.fbml.erb,但如果我在主控制器的索引操作中如上所示进行响应,则它不会在响应块中发送app/views/main/index.fbml.erb

有人知道如何轻松做到这一点吗

我使用gem“facebooker”,它会自动将格式设置为fbml

编辑 my Rails日志的输出:

in main format block, request.format.fbml? = true
Rendering template within layouts/main
Rendering main/index

应该自动执行此操作。控制器的前过滤器。如果您不希望将整个facebooker添加到您的应用程序中,那么提取功能似乎相对容易。

根据您使用的facebooker版本,可能需要在/config/initializers/mime_types.rb中显式添加以下行

Mime::Type.register_alias "text/html", :fbml

在与Facebooker打交道和编写Facebook应用程序很久之后,我遇到了这种情况。事实证明,在我的新应用的Facebook设置中,渲染方法被设置为IFrame而不是FBML。facebooker不会将fbml发送到iframe是有道理的,因为浏览器不知道如何渲染fbml和fbml标记。

很高兴知道这是自动完成的。但是,我使用facebooker,问题仍然存在。它只渲染布局,但不渲染respond_to块中的任何内容。你知道为什么会这样吗?