我只使用JavaScript试图让rails闪存通知出现在我的应用程序中。我有一个表单,它利用remote: true在提交时向控制器发出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生成的,它还安装了引导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然后控制器调用create.js.erb作为respond_to块的一部分。
# 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">×</button>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
</div>
<% end %>
<% end %>任何帮助,我可以如何获得闪光灯通知显示通过JavaScript将不胜感激。
发布于 2016-08-11 14:29:56
您只需要重新呈现在js.erb中呈现闪存消息的部分。
# app/views/emails/create.js.erb
$('.flash_wrapper').html("<%= escape_javascript(render 'layouts/messages') %>");在控制器中设置闪存
format.js { flash.now[:notice] = 'Email was successfully registered' }这会让你看到闪光灯
注意: .flash_wrapper是您的包装器,您要在其中呈现_message部分。
https://stackoverflow.com/questions/38898796
复制相似问题