什么是即时消息?
即时消息是与Rails应用程序用户交流信息的一种方式,使他们可以知道由于其操作而发生的情况。
消息示例:
- “密码正确更改”(确认)
- “找不到用户”(错误)
您可以在控制器中设置这些即时消息,然后在视图中呈现它们。然后,您的用户可以采取相应的行动。
让我们确切地了解其工作原理!
如何使用即时消息
您可以使用
flash
帮助程序方法处理这些通知消息。它的行为很像Ruby哈希。
闪光灯对象有类似的方法
keys
,any?
或each
与您可以访问特定的消息[]
。您可以设置哪些类型的即时消息?
默认情况下,您有:
获取我的终极Ruby秘籍表: 这个方便的7页PDF帮助您快速找到所需的Ruby语法,正在寻找的Ruby方法或您不太记得其名称的内置类。
- 注意
- 警报
这是一个使用方法的例子:
- 闪。alert = “找不到用户。”
或者,如果您喜欢:
- flash [ :alert ] = “找不到用户。”
(只有样式上的差异。)
您可以使用此代码内部控制器的操作,如
index
,create
,new
,等。另一种方法是这样的:
- redirect_to :books_path ,注意:“找不到书”
这样一来,您就可以重定向和创建Flash消息。
真好!
警报与通知
据我了解,您使用
alert
还是并不重要notice
。使用对您的情况更自然的一种。
我想将其
alert
视为错误消息和notice
确认消息。分开它们可以帮助您设计不同的样式。
例如:
您可以将警报显示为红色,将通知显示为绿色。
也可以使用
add_flash_types
controller方法创建自己的Flash类型。像这样:
- 类ApplicationController
- add_flash_types :info ,:error ,:warning
- 结束
我喜欢使事情保持简单,所以我坚持使用内置类型
呈现Flash消息
Flash消息不会自动显示。
您必须在一个视图中渲染它们,以便用户可以看到它们。
考虑将其添加到您的应用程序布局中。
这是一个代码示例:
- < %flash.each做| msg |类型 %>
- <div>
- <%=味精%>
- </ div>
- < %结束%>
将此放置在您想要显示通知的任何地方,通常在页面顶部菜单栏下方。
请记住:
呈现消息后,该消息将从中删除
flash
,因此不会再次显示。设置您的通知和警报消息
Flash消息没有任何内置设计或样式。
解?
如果您使用的是Bootstrap,则可以使用
"alert alert-info"
CSS类使Flash消息看起来不错。范例:
- < %flash.each做| msg |类型 %>
- <div class = “警报警报信息” >
- <%=味精%>
- </ div>
- < %结束%>
看起来像这样:
如果您不使用Bootstrap,则可以编写自己的CSS,以使其具有所需的外观。
Flash消息何时呈现?
显示Flash消息后,仅在您执行下一个控制器操作时才将它们删除。
含义:
- 如果您redirect_to,然后flash发送一条消息,那很好
- 如果您redirect_to不提供消息,则消息将在flash哈希中停留
- 如果您render采取与设置flash消息相同的操作,则该flash消息将可用,但不会被删除,因此它将一直存在并有可能显示两次
所以…
如果要为当前操作设置即时消息该怎么办?
那就是
flash.now
进来的地方!这是一个例子:
- 定义指数
- @books = 书。所有
- 闪。现在[ :notice ] = “我们正好提供#{@books.size}本书。
- 结束
这将渲染
index
视图。该
notice
邮件将显示并从中删除,flash
因此不会显示两次。换句话说:
仅
flash.now
在要render
重定向时才需要使用。