![](/img/trans.png)
[英]What is the best way to embed/nest multiple forms in rails simple form?
[英]What's the best way to embed a small chunk of javascript in Rails?
这是我的application.html:
<body>
<div class="bg-cover">
<div class="background">
<%= render 'layouts/header' %>
<main>
<% flash.each do |message_type, message| %>
<div class="alert alert-<%= message_type %>">
<script>Materialize.toast("<%= message %>", 5000, 'rounded <%= message_type %>', 'success')();</script>
</div>
<% end %>
<%= yield %>
</main><!--End of main-->
<%= render 'layouts/footer' %>
</div><!-- end of container main-->
</div>
</body>
</html>
我不知道是否将此脚本直接嵌入到application.html中是最佳实践。 有人可以建议最佳做法是什么吗? 谢谢!!
您可以通过这种方式做到这一点,但我将它分为部分内容:
layouts/_flash_message.html.erb
<% flash.each do |message_type, message| %>
<div class="alert alert-<%= message_type %>">
<script>Materialize.toast("<%= message %>", 5000, 'rounded <%= message_type %>', 'success')();</script>
</div>
并像这样包含它:
<body>
<div class="bg-cover">
<div class="background">
<%= render 'layouts/header' %>
<main>
<%= render "layouts/flash_message" %>
<% end %>
<%= yield %>
</main><!--End of main-->
<%= render 'layouts/footer' %>
</div><!-- end of container main-->
</div>
</body>
</html>
实际上,这样做是一种不好的做法,您应该改而使用不引人注意的javascript做法( http://blog.teamtreehouse.com/unobtrusive-javascript-important ),所有javascript代码都应以Javascript文件而不是视图内部编写。
要在您的情况下实现此目的,可以在有消息的情况下添加带有特定类的div,并通过data
属性在javascript中传递所需的任何参数
<div class="show-material-message" data-message="<%= message %>"></div>
然后在您的javascript application.js
,例如侦听此div并在需要时触发Materialize.toast
$( document ).ready(function() {
$(".show-material-message").each(function(){
Materialize.toast($(this).data('message'), 5000....
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.