如果您生成的URL可以訪問您的應用中的資源(頁面),那麼可以使用REST風格指定資源位置,例如/pages/2.jpg,/pages/3.vcard,/ pages/4 (默認爲html),使用內置的Rails視圖助手,如page_url(@page,:format =>'jpg')。然後,它只是在Rails中使用repond_to提供資源的問題:
respond_to do |format|
format.html { # default rendering in show.erb.html }
format.jpg { # perhaps send_file or send_data call }
format.vcard { # send attachment }
end
退房的Rails Routing Guides更多信息。您需要配置Rails來處理.vcard的請求。見this gist。
如果您不控制鏈接生成(外部引用您的資源)並希望獲得像/ pages/2(這是一個jpeg)之類的請求,那麼您必須退回到使用您的page_type列來有條件地使用send_file,send_data或其他Rails渲染方法進行渲染。您可以考慮重新使用您爲上述respond_to中的每個塊創建的邏輯(方法),以便您的控制器具有'respond_to_html','respond_to_jpg','respond_to_vcard'方法。