首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用[action].js.erb在Rails中调用Flash通知

使用[action].js.erb在Rails中调用Flash通知
EN

Stack Overflow用户
提问于 2016-08-11 14:12:05
回答 1查看 5.1K关注 0票数 1

我只使用JavaScript试图让rails闪存通知出现在我的应用程序中。我有一个表单,它利用remote: true在提交时向控制器发出AJAX请求。该表单如下所示:

代码语言:javascript
复制
  # 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。

代码语言:javascript
复制
  # 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块的一部分。

代码语言:javascript
复制
  # app/views/emails/create.js.erb
  // flash to user it was successful
  $(".alert").html("Email was successfully registered");

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

代码语言: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将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-08-11 14:29:56

您只需要重新呈现在js.erb中呈现闪存消息的部分。

代码语言:javascript
复制
# app/views/emails/create.js.erb
$('.flash_wrapper').html("<%= escape_javascript(render 'layouts/messages') %>");

在控制器中设置闪存

代码语言:javascript
复制
format.js { flash.now[:notice] = 'Email was successfully registered' }

这会让你看到闪光灯

注意: .flash_wrapper是您的包装器,您要在其中呈现_message部分。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38898796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档