-1

さまざまなフラッシュ メッセージに対応する記号のリストがあります。

:is_self
:already_exist
:already_added 
:invited 
:added

メソッドを実行するたびに、変数answerにこれらのシンボルのいずれかが割り当てられます。message表示したいフラッシュメッセージを変数に割り当てました:

message = t("flash.#{answer.to_s}")

これはうまくいきます。メソッドの最後に、次のようなものがあります。

respond_to do |format|
  format.html { redirect_to url, flash: { info: message } }
end

フラッシュ メッセージの色を変更したい ( を切り替えるinfo: success: error:)。フラッシュ メッセージの適切な色を含むハッシュ変数を設定するにはどうすればよいですか? 私は次のようなものを試しました:

new_hash = { :is_self => "info:" , :already_exist => "info:" , :already_added => "info:", :invited => "success:", :added => "success:", }
flash_color = new_hash[answer]

その後:

respond_to do |format|
  format.html { redirect_to url, flash: { flash_color message } }
end

しかし、私は働きません。正しい構文を与える方法がわかりません。

4

2 に答える 2

3

スタイル フラッシュに twitter ブートストラップを使用している場合、選択したスタイルを次の場所に保存できます。application_helper.rb

module ApplicationHelper
  def flash_class(level)
    case level
    when :notice then "alert alert-info"
    when :success then "alert alert-success"
    when :error then "alert alert-warning"
    when :alert then "alert alert-danger"
    end
  end
end

フォルダレイアウトでファイル_flash_message.html.erbを作成し、これを貼り付けます

<div>
  <% flash.each do |key, value| %>
    <div class="alert <%= flash_class(key).to_s %> fade in">
      <a href="#" data-dismiss="alert" class="close">×</a>
      <%= value %>
    </div>
  <% end %>
</div>

フラッシュを呼び出すには、ビューでレンダリングするだけです

<%= render 'layouts/flash_message' %>
于 2013-02-05T12:14:47.380 に答える
0

構文を少し混同しています。最初に取得したマッピング:

{ info: message }

:infoは、シンボルを の値にマッピングするハッシュですmessage。それは書くことができました{ :info => message }

ハッシュnew_hashには、シンボルを示すために ruby​​ 1.9 ハッシュ構文で使用されるコロンを文字列に含めています。有効な方法でハッシュを設定していないため、構文エラーが発生していると思います。

より伝統的なハッシュ構文を使用して、 でシンボルを指定する必要があると思いますnew_hash。このようなものが動作するはずです:

new_hash = { 
  :is_self => :info, 
  :already_exist => :info, 
  :already_added => :info, 
  :invited => :success, 
  :added => :success, 
}

と:

flash_color = new_hash[answer]
respond_to do |format|
  format.html { redirect_to url, flash: { flash_color => message } }
end

PSまた、あなたがそれを呼んでいるのも少し混乱していますflash_color-色は、実際にはフロントエンドでスタイリングされていることの副産物にすぎません. それらは実際にはフラッシュ ハッシュの単なるキーです。

于 2013-02-05T13:30:00.623 に答える