Wednesday, 15 April 2015

twitter bootstrap - Rails 4 - Flash as Key Value Pair Error -



twitter bootstrap - Rails 4 - Flash as Key Value Pair Error -

i trying utilize bootstrap styles display flash messages color users.

controller

def create @category = category.new(category_params) # assigning default values @category.status = 1.to_i if @category.save redirect_to admin_categories_path, :flash => { :success => "category created." } else flash[:error] = "category not save. please seek again." render :new end end

view

<%= render 'admin/partials/flash_message' %>

partial

<% if flash.present? %> <%= flash.inspect %> <% flash.each |key, value| %> <div class="<%= flash_class(key) %> fade in widget-inner"> <button type="button" class="close" data-dismiss="alert">×</button> <%= value %> </div> <% end %> <% end %>

helper

# flash messages def flash_class(level) case level when :notice "alert alert-info" when :success "alert alert-success" when :error "alert alert-error" when :alert "alert alert-error" end end output

i not able pass key helper function. assuming sends blank. html gets outputted

<div class=" fade in widget-inner"> <button data-dismiss="alert" class="close" type="button">×</button> category not save. please seek again. </div>

i not able figure out why foreach not able extract key , value pair. on inspect following

#<actiondispatch::flash::flashhash:0x007fc0e74dfa58 @discard=#<set: {}>, @flashes={"error"=>"category not save. please seek again."}, @now=nil>

in rails 4, supports strings. had alter helper following

# flash messages def flash_class(level) case level when 'notice' "alert alert-info" when 'success' "alert alert-success" when 'error' "alert alert-danger" when 'alert' "alert alert-warning" end end

**edit: according deep suggestions **

by changing flash partial to

<% if flash.present? %> <% flash.each |key, value| %> <div class="alert alert-<%= key %> fade in widget-inner"> <button type="button" class="close" data-dismiss="alert">×</button> <%= value %> </div> <% end %> <% end %>

and extendting bootstrap classes follows can eliminate helper class together.

alert-notice { @extend .alert-info; } alert-error { @extend .alert-danger; }

ruby-on-rails twitter-bootstrap foreach flash-message

No comments:

Post a Comment