我正在尝试使用materialize.css中的toast组件来呈现Flash消息。我修改了我的布局,但我没有得到任何祝酒。
doctype html
html
head
title
| A beautiful Site
= stylesheet_link_tag "//cdnjs.cloudflare.com/ajax/libs/materialize/0.97.1/css/materialize.min.css"
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
= javascript_include_tag 'application', 'data-turbolinks-track' => true
= javascript_include_tag "//www.google.com/jsapi"
= csrf_meta_tags
meta[name="viewport" content="width=device-width, initial-scale=1"]
= analytics_init unless Rails.env.test?
body
.row
= render partial: "elements/navbar"
- flash.each do |_key, msg|
javascript:
Materialize.toast(msg, 5000);
.row
.container.col.s10
= yield
.meta.col.s2
= render partial: 'elements/ads'
答案 0 :(得分:0)
您当前的代码正在尝试使用Javascript变量" msg"哪个不存在。您应该可以在浏览器的控制台中验证这一点。
您需要使用Rails变量才能工作:
- flash.each do |_key, msg|
javascript:
Materialize.toast("#{msg}", 5000);
确保你也引用变量。
答案 1 :(得分:0)
我认为问题在于您在页面&之前调用Materialise.toast()。 javascript文件已完成加载。解决此问题的最佳方法是使用
打包您的javascript调用$(document).ready(function(){你的代码在这里}}
试试这个
- flash.each do |name, msg| :javascript $(function(){Materialize.toast("#{msg}", 10000);});
答案 2 :(得分:0)
这对我有用......
- if flash.any?
javascript:
$(function(){Materialize.toast("#{notice}", 5000);});