Rails 4 x Bootstrap 3:如何从控制器生成错误警报

时间:2015-09-18 19:03:23

标签: ruby-on-rails forms twitter-bootstrap ruby-on-rails-4 alert

我使用Rails 4和Bootstrap 3构建CRUD Web应用程序。

我有一个Invite模型,可让用户邀请其他用户加入该应用 - 目前正在使用。

这是我的InvitesController

class InvitesController < ApplicationController
  def create
    # some code
    if @invite.save
      # some code
      redirect_to some_path, notice: 'Invitation was successfully sent.'
    else
      redirect_to another_path, alert: 'Invitation could not be sent: please make sure you enter a valid email address and choose a role.'
    end
  end

end

现在,当用户成功发送邀请时,他会被重定向到某个路径并获得 blue notice正确地告诉他。

但是,如果用户未正确填写“邀请”表单并且无法成功发送邀请,则会将其重定向到同一视图(表单所在的位置)并获取 黄色 alert告诉他表格中有错误。

我想将后者设为 red alert,我认为Bootstrap允许我使用redirect_to another_path, error: 'Invitation could not be sent: please make sure you enter a valid email address and choose a role.'

这不起作用。

- - - -

更新:我在这里寻找的是一种使用.alert-danger Bootstrap警报类的方法,我不想简单地将警报的颜色从黄色更改为红色

- - - -

实现我需要的Rails / Bootstrap方式是什么?

1 个答案:

答案 0 :(得分:2)

以下是我完成此任务的方式:

首先,我创建一个helper methodflash message type翻译成bootstrap type

def bootstrap_class_for flash_type
  case flash_type.to_sym
    when :success
      "alert-success"
    when :error
      "alert-danger"
    when :alert
      "alert-warning"
    when :notice
      "alert-info"
    else
      flash_type.to_s
    end
end

然后我创建一个partial来根据其类型呈现存储在flash会话中的消息。

<% flash.each do |type, message| %>
  <div class="alert <%= bootstrap_class_for(type) %> fade in">
   <button class="close" data-dismiss="alert">×</button>
   <%= message.html_safe %>
  </div>
 <% end %>