2012-01-02 12 views
1

GitHubでいくつかのフラッシュメッセージが表示されたプロジェクトをフォークしました。例えば、私はフォークプロジェクトにおけるTwitterの記号で私もそれが赤になり、CSSでクラスを見つけたレールでのフラッシュメッセージの設定に問題があります

flash[:error] = "Sign in with Twitter failed" 

で失敗した看板のため、この赤いエラーメッセージを表示しています。このエラーメッセージを他の場所で使用したいのですが、問題があります。私はそれは単にTwitterのメッセージを投稿し、エラーメッセージを与えていないいないこの

redirect_to show_path, flash[:error] => "Twitter's saying you're trying to post the same message twice" 

を実行しようとしました。例えば

、。私にこのメッセージを与えて(私は二回投稿しようとすると)私はそれが全体のアプリケーションを壊す =>=に変更する場合:予告:

can't convert Symbol into String 

でも見知らぬ人(私には)、私はとの問題はありません。これは大丈夫だった。

redirect_to show_path, :notice => "Your Tweet was posted!" 

これはなぜ起こっているのですか? This is the project on GitHub

答えて

4

この例では、:noticeというシンボルを、flash[:notice]の代わりにredirect_toのハッシュ引数に使用しています。エラーフラッシュのコードでは、flash[:alert]を使用しようとしています。

​​
+0

は実際に、私はすでにあなたの最初のソリューションを試みたが、全くのエラーメッセージが表示されなかったことを指摘しました。しかし、2番目のソリューションが機能しました。なぜ最初のものが動作していないのか説明できますか? – Leahcim

+0

あなたの例では、redirect_to呼び出しで 'flash [:error] =>" stuff "'を使用しています。あなたは ':error =>' stuff ''をフラッシュ(flash)なしで使う必要があります。 – jsinger

+0

これらの違いは、 'flash [:error] =>' stuff "'を使うと、ハッシュ引数に入るキーは 'flash [:error]'の値に関係なく、あらかじめ明示的に設定している場合を除きます。 ':error => 'stuff''を渡す代わりに、 'flash'に浮かぶ不思議な値ではなく、あなたのキーに':error'シンボル自体を使用しています。 – jsinger

0

はやってみました:あなただけのシンボルを渡すので、

redirect_to show_path, :error => "Twitter's saying you're trying to post the same message twice" 

あなたはまた、前redirect_toの呼び出しにアラートフラッシュを設定することができますしようとする必要がありますか?

flash.nowの[:お知らせ] = "いくつかのテキストは、"

3

うん、私もそこにしてきた:)

@jsingerは部分的に正しいです。 flash[]ハッシュの代わりにシンボルを渡す必要があります。しかし、キャッチがあります:redirec_toは、2つの略記記号(:notice:alert)だけをサポートしています。 3番目に一般的なものがあります::flash

redirect_to show_path, :flash => { :success/:error/:whatever => "your flash message" } 

これの背後にはどんな理由があるのだろうか。あなたが密接に私のOPを読めば

APIdock

+0

'args [:flash] .each {| k、v |のようなバケット構文を使って一般的な場合に使うことができる、よりシンプルなインターフェースを持つ方が簡単かもしれません。フラッシュ[k] = v} '。しかし、非常によく使用されている有効なタイプの小さなサブセット(:noticeと:alert)がある場合、それらに直接ショートカットを置くことでかなりの時間/コードを節約できます。 – jsinger

+0

それはまさに私が言っていることです。あなたがいくつかのフラッシュパラメータを設定する必要がある場合、バケツは素晴らしいものかもしれませんが、私はそれを一度も使用していません。一方、私は時々、すべてのプロジェクト+アラートで成功、エラー、通知を使用します。 'redirect_to ...、:success =>' well done! ''と書くだけでも少しシンプルになります。 ':) – bassneck

+0

はい。おそらくRailsの開発者のようなものです:通知と:多くの警告?知るか。実際、api [here](http://api.rubyonrails.org/classes/ActionDispatch/Flash/FlashHash.html)を見ると、警告とアラートは組み込みアクセッサを持つ唯一のFlashHashオプションであり、後で任意の記号。それが当てはまる場合、私はそれが理にかなっていると思う - 成功などは単にコミュニティによって使用される規則です。たぶん古いバージョンのみが許可されています:通知と警告:具体的なので、それから成長しましたか?私は数日間Railsを使いこなしていたので、idkだ。 – jsinger

関連する問題