3

私は Facebook アプリを開発しているので、P3P (Privacy Preferences Project) のために Cookie に頼ることができません。うん、それはとても面倒なことです (写真については、Rails と Facebook アプリに関するこのスライドシェアのスライド 18 と 19 を参照してください)。 ...

Facebook アプリでは、ブラウザーの観点から、すべての Cookie はサードパーティの Cookieです。また、多くのブラウザーはデフォルトでそれらをブロックします。

私の質問は、Cookie に依存せずにフラッシュ メッセージを実装するにはどうすればよいですか?

アップデート:

session_store.rbそれに応じてDBを変更しました。現在、セッションは DB に保存されていますが、フラッシュ メッセージはまだ Cookie に依存しています。

更新#2:

最終的に回避策を見つけました。以下の回答を参照してください。最善の方法は、すべてを ajax することです(上記のリンクのスライドシェアによると) が、簡単な修正として私のソリューションが機能するはずです。

4

2 に答える 2

3

私は最終的に、独自の(単純な)フラッシュメッセージを実装し、それらをパラメーターを介してあるリクエストから別のリクエストに渡す回避策を見つけました。

まず、すべてのリクエストに :my_flash パラメータを追加するために上書きdefault_url_optionsしました:application_controller.rb

def default_url_options 
  { :my_flash => @my_flash }
end    

次に、常に変数を設定する before_filterapplication_controller.rbを書きました。my_flash_from_params@my_flash

def my_flash_from_params
  @my_flash = params[:fb_flash]
end 

最後に、次の_my_flash.html.erbパーシャルをレンダリングしましたapplication.html.erb

<div class="my_flash">
  <%= my_flash %>
</div>  

呼び出し:

 <%= render :partial => "layouts/my_flash", :locals => {:my_flash => @my_flash} if @my_flash %>

この解決策を試してみたい場合は、default_url_options rewriting に関するこの回答も参照してください。

于 2012-07-13T16:33:41.830 に答える
0

Flash メッセージは、セッションの上に構築されます。そのため、セッション ストアを変更してデータベースを使用する場合でも、フラッシュを利用できます。config/initializers/session_store.rbこれは、そのファイルを編集して指示に従うことで簡単に実行できます。

トピックの詳細は次のとおりです:アクション コントローラーの概要 -> セッション

于 2012-07-12T18:47:57.647 に答える