gpt4 book ai didi

javascript - 使用 [action].js.erb 在 Rails 中调用 Flash Notice

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:34 24 4
gpt4 key购买 nike

我试图通过仅使用 JavaScript 让 Rails Flash 通知出现在我的应用程序中。我有一个表单,它利用 remote: true 在提交时向 Controller 发出 AJAX 请求。表单如下所示:

  # app/views/_email_register.html.erb
<%= simple_form_for :email, url: emails_path, remote: true do |f| %>
<div class="modal-body">
<div class="form-group">
<%= f.input :address, as: :email, placeholder: 'user@domain.com', label: false %>
</div>
</div>
<div class="modal-footer">
<%= f.submit 'Subscribe', class: 'btn btn-primary btn-block' %>
</div>
<% end %>

rails 应用程序是使用 rails-composer 生成的,它还安装了 bootstrap css。

  # app/controllers/emails_controller.rb
def create
@email = Email.new(email_params)
respond_to do |format|
if @email.save
format.html { redirect_to :back, notice: 'Email was successfully registerd' }
format.js
else
format.html { render :new }
format.js
end
end
end

然后 Controller 调用 create.js.erb 作为 respond_to block 的一部分。

  # app/views/emails/create.js.erb
// flash to user it was successful
$(".alert").html("Email was successfully registered");

_messages.html.erb 部分是从 rails-composer 自动生成的。不确定是否可以从 JavaScript 调用此部分

# app/views/layouts/_messages.html.erb
<% flash.each do |name, msg| %>
<% if msg.is_a?(String) %>
<div class="alert alert-<%= name.to_s == 'notice' ? 'success' : 'danger' %>">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
</div>
<% end %>
<% end %>

如能提供有关如何通过 JavaScript 显示 Flash 通知的任何帮助,我们将不胜感激。

最佳答案

您只需要重新渲染在您的 js.erb 中呈现 flash 消息的部分

# app/views/emails/create.js.erb
$('.flash_wrapper').html("<%= escape_javascript(render 'layouts/messages') %>");

在你的 Controller 中设置闪光灯

format.js { flash.now[:notice] = 'Email was successfully registered' }

这会让你看到闪光灯

注意:.flash_wrapper 是您渲染 _message 部分的包装器。

关于javascript - 使用 [action].js.erb 在 Rails 中调用 Flash Notice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38898796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com