如何将 toastr-rails gem 添加到 Rails 6 项目?
Posted
技术标签:
【中文标题】如何将 toastr-rails gem 添加到 Rails 6 项目?【英文标题】:How do you add toastr-rails gem to Rails 6 project? 【发布时间】:2020-03-05 16:58:41 【问题描述】:我正在尝试将 toastr gem 添加到我的 Rails 6 项目中。我还安装了设计 gem。
我不了解 webpacker 以及如何使 toastr-rails webpacker 友好。
我已阅读所有文档。不要告诉我阅读文档。
这是我尝试过的:
yarn add toastr
然后在我的 assets/packs/application.js 文件中,我添加了:
@import 'toastr'
在我的 assets/stylesheets/application.scss 文件中,我添加了:
*= require_toastr
最后我的 layouts/application.html.erb 有这个代码:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<% unless flash.empty? %>
<script type="text/javascript">
<% flash.each do |f| %>
<% type = f[0].to_s %>
toastr['<%= type %>']('<%= f[1] %>');
<% end %>
</script>
<% end %>
<%= yield %>
</body>
</html>
我没有收到 toast 通知。 我没有收到任何通知。 但这段代码适用于我的 Rails 4 项目。
【问题讨论】:
【参考方案1】:如果要使用 toastr-rails gem 添加 toastr,请使用资产管道而不是 webpack。
以下是添加toastr
和webpack
的步骤。
用纱线添加 toastr js
yarn add toastr
在 app/javascript/packs/application.js 中需要 toastr。我将它添加到全局以避免错误
global.toastr = require("toastr")
创建 app/javascript/stylesheets/application.scss 文件以导入自定义或库 css 文件
在 app/javascript/stylesheets/application.scss
中导入 toastr css@import 'toastr'
在 app/javascript/packs/application.js
中导入 app/javascript/stylesheets/application.scss 文件import "../stylesheets/application"
我为 flas 消息编写了一个辅助方法。将此方法添加到 application_helper.rb 或其他帮助程序
def toastr_flash
flash.each_with_object([]) do |(type, message), flash_messages|
type = 'success' if type == 'notice'
type = 'error' if type == 'alert'
text = "<script>toastr.#type('#message', '', closeButton: true, progressBar: true )</script>"
flash_messages << text.html_safe if message
end.join("\n").html_safe
end
将toastr_flash
方法添加到layouts/application.html.erb 或任何你想要的地方
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<%= yield %>
<%= toastr_flash %>
</body>
</html>
【讨论】:
感谢您的回复。可悲的是它没有用。我什至尝试在@import 'toastr';
和import "../stylesheets/application";
中添加分号,但没有成功。但是您的回答可以帮助我了解 webpack。我会继续修修补补
@davidlee 是否出现错误? (查看控制台)如果是这样,什么是错误?【参考方案2】:
首先你需要将 toastr 添加到你的项目中
使用纱线
yarn add toastr
使用 npm
npm -i toastr
之后你可以在你的 node_modules 中看到文件 toastr (node_modules/toastr) 里面有 toastr.scss 文件和 toastr.js 文件,我们来导入它
app/assets/application.scss
@import "toastr/toastr";
app/javascripts/packs/application.js
toastr = require("toastr")
或
import toastr from 'toastr/toastr';
【讨论】:
以上是关于如何将 toastr-rails gem 添加到 Rails 6 项目?的主要内容,如果未能解决你的问题,请参考以下文章
如何在Rails 3应用程序中将gem添加到我的vendor / cache目录?
使用 Gibbon gem 将地址添加到 mailchimp