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