Ruby on rails 什么';在Rails中嵌入一小块javascript的最佳方法是什么?
这是my application.html:Ruby on rails 什么';在Rails中嵌入一小块javascript的最佳方法是什么?,ruby-on-rails,Ruby On Rails,这是my application.html: <body> <div class="bg-cover"> <div class="background"> <%= render 'layouts/header' %> <main> <% flash.each do |message_type, message| %> <div class="ale
<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>
具体化。吐司(“、5000、‘四舍五入’、‘成功’)();
我不知道将这个脚本直接嵌入application.html是否是最佳实践。谁能告诉我最好的做法是什么?谢谢 你可以这样做,但我会把它放在一个部分:
layouts/\u flash\u 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>
具体化。吐司(“、5000、‘四舍五入’、‘成功’)();
包括:
<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实践()任何javascript代码都是在javascript文件中编写的,而不是在视图中 为了在本例中实现这一点,您可以添加一个具有特定类的div,以防出现消息,通过
data
属性传递javascript中需要的任何参数
<div class="show-material-message" data-message="<%= message %>"></div>
哦我想我也能做到。我一直在读一些文章,每个人都在强调使用rails资产管道,而不是直接嵌入脚本。这就是为什么我想知道这是否仍然是专业的。但是谢谢。我会马上做一个局部的。是的,大多数事情你都应该这样做。但是这是一个flash的单行程序,所以不需要使用链轮,但是你可以创建一个
\u flash.js
并将其包含在application.js
Aha中,这是我的问题。因为这只是一条线,当然,如果我直接嵌入,我会被原谅的。谢谢蔡斯,谢谢你的时间。哇。。。我真的没想到。我只知道直接输入脚本有问题。谢谢Bigsolom。
$( document ).ready(function() {
$(".show-material-message").each(function(){
Materialize.toast($(this).data('message'), 5000....
});
});