用Rails中的Bootstrap Modal替换Flash注意事项

时间:2014-11-19 14:02:49

标签: jquery ruby-on-rails twitter-bootstrap flash bootstrap-modal

所以我有一个页面,用户点击一个按钮,这会发布一个表单并在后台上传一个pdf文件。完成发布表单后,会出现一条闪烁通知,说明pdf已成功上传。当后台pdf上传完成时,我想显示模态而不是闪光通知。我怎么能这样做?

pages_controller.rb

def send_pdf
  require "net/http"
  uri = URI('http://www.skillchest.com/users/receive_certificate')
  x = Net::HTTP.post_form(uri, params)
  puts x.body
  redirect_to pages_course_page_certificate_path, notice: 'You have sent your pdf to <u><a href=http://www.website>website</a></u>. Login now to check it out!'.html_safe
  ## how to make the above line show as a modal instead of a flash notice?
end

course_page_certificate.html.erb

<h1>Congratulations! Here is your certificate.</h1>
<%= form_tag({controller: "pages", action: "send_pdf"}, method: "post") %>
<%= hidden_field_tag(:end_date, @today) %>
<% url = current_user.certificate.s3_object.url_for(:read, :expires => 10*60) %>
<%= hidden_field_tag(:pdf_url, url) %>
<%= hidden_field_tag(:student_email, current_user.email) %>
<%= hidden_field_tag(:institution_id, '2') %>
<%= hidden_field_tag(:course_title, 'Lesson 1') %>
<%= submit_tag "Send Your Certificate to SkillChest", class: "btn btn-warning btn-lg continue" %>

当用户单击“发送您的证书”按钮时,证书将发布到控制器操作中的URL。然后通知显示它已成功发送。所有这一切都很好,我只想在完成http post动作而不是flash通知时显示一个模态。我该怎么做?

谢谢!

screenshot

2 个答案:

答案 0 :(得分:0)

所以这不是一个完美的答案,因为通知仍在那里,但这就是我为使模态工作所做的。

我刚刚检查了alert类html是否包含通知消息。如果是,那么我会显示我想要的模态。当然,理想情况下我只会显示模态而不是通知,但仍然没有想出那部分。

if ($(".alert").html().indexOf("You have sent your") >= 0) {
  $("#sendToSkillChestModal").modal();
}

答案 1 :(得分:0)

请务必查看the Flash的文档。

对于您的情况,您可以将闪光灯更改为自定义,以便它不会显示为通知。

def send_pdf
  require "net/http"
  uri = URI('http://www.skillchest.com/users/receive_certificate')
  x = Net::HTTP.post_form(uri, params)
  puts x.body
  redirect_to pages_course_page_certificate_path, flash[:pdf_upload] = 'You have sent your pdf'
  ## will use :pdf_upload in view
end

然后在您的视图中,您可以输入以下内容:

<% if flash[:pdf_upload] %>
  <%= render 'pdf_upload_modal.html' %>
<% end %>

然后你可以把你喜欢的任何东西放在部分&#39; _pdf_upload_modal.html&#39;并使用Jquery淡出部分。

这不是一个真正的模态,但对我来说效果很好。希望这可以帮助!