2009-10-01 107 views
0

我想在我的Rails應用程序,以不同的格式進行迴應:Facebook FBML請求不發送MIME類型?

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文件。

我的應用程序知道要從佈局目錄而不是main.html.erb發送main.fbml.erb,但是如果我以響應的方式響應,它從不發送app/views/main/index.fbml.erb作爲響應如上所示在我的主控制器的索引操作中。

任何人都知道如何輕鬆地做到這一點?

我使用gem「facebooker」自動將格式設置爲fbml。從我的Rails

編輯 輸出日誌:

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

回答

2

Facebooker應自動執行此操作。 It adds a set_facebook_request_format過濾器到您的控制器。如果您不想將整個facebooker添加到您的應用程序中,則提取功能看起來相對容易。

+0

很高興知道這是自動完成的。但是,我使用的是facebooker,問題依然存在。它呈現佈局很好,但不會呈現respond_to塊中的任何內容。你知道爲什麼會發生這種情況嗎? – Tony 2009-10-01 18:55:50

0

根據您所使用Facebooker的版本,可能需要以下行明確添加到您的/config/initializers/mime_types.rb

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

這似乎沒有幫助 – Tony 2009-10-01 22:37:04

0

我只是碰到了這個經過長時間遠離與Facebooker打交道並寫Facebook應用程序的時間。結果發現,在我的新應用的Facebook設置中,渲染方法被設置爲IFrame而不是FBML。因爲瀏覽器不知道如何渲染和fbml標籤,所以facebooker不會將fbml發送到iframe。