Я пытаюсь создать модальный блок для регистрации адресов электронной почты в рельсах. Я сделал это, но не могу найти способ отображения флэш-сообщений в модальном диалоговом окне при неудачной регистрации. При отправке ящик закрывается, и сообщение появляется только на главной странице. У меня нет хороших знаний о сети или рельсах, но было бы неплохо, если бы я мог получить некоторые указатели.Отображение флэш-сообщений в модальном диалоговом окне на отправке рельсов
Функциональность работает нормально, ожидая неудачи, диалоговое окно должно отображать сообщения на нем, а не на домашней странице. Я знаю, где проблема в моем коде, но не знаю, как это сделать. Вот мой код диалоговое окно для
<div id="register" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<%= form_for(@email, url: home_esave_path, :html => {class:"model-dialog"}) do |f| %>
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Register</h4>
</div>
<div class="modal-body">
<div class="form-group">
<%= f.text_field :email, class:"form-control", placeholder: "Enter a valid gmail address" %>
</div>
<%= f.show_simple_captcha(:email=>"email", :label => "Human Authentication", :refresh_button_text => "Refresh text", class:"form-control", :placeholder => "Enter the code") %>
<%= f.submit "Register me!", :class => "btn register_button" %>
</div>
<div class="modal-footer" style="text-align:left">
<!-- show in case of success -->
<% if @email.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(@email.errors.count, "error") %> prohibited
this email from being saved:
</h2>
<ul>
<% @email.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
<% end %>
</div>
</div>
мой контроллер код, чтобы получить сообщения
def save
@email = Email.new(user_params)
if !user_params.nil?
if @email.save_with_captcha
flash[:success] = "Success! The email address #{@email.email} has been successfully registered. We will contact you as soon as we have available rooms for new beta testers."
redirect_to :action => 'index'
else
if @email.valid?
flash[:error] = "The captcha is not correct, enter again the captcha."
redirect_to :action => 'index'
else
flash[:error] = "You have put invalid #{@email.email}"
redirect_to :action => 'index'
end
end
end
конец Флэш-сообщения Я отображающие вне этой модели, очевидно, что будет отображаться на главной странице. Но я не нашел способ отобразить его в диалоговом окне модели.
вот как я отображение сообщений
<% flash.each do |type, message| %>
<div class="alert <%= alert_for(type) %> fade in">
<button class="close" data-dismiss="alert">×</button>
<span class="sr-only">Close</span>
<%= message %>
</div>
<% end %>
Спасибо за предложения
Я не уверен, что это можно сделать. Flash предназначен для отображения новой страницы. Я сделал это в одном из своих приложений с модальным с Ajax и, по существу, создав/стилизовал флеш-сообщение в моем файле просмотра .js.erb. Я могу опубликовать ответ, объясняющий этот подход немного больше, если это будет интересно. –
Да, если я могу получить одобрение, этого должно быть достаточно, чтобы он работал. Даже несмотря на то, что я не очень хорош в этом языке .. но по крайней мере что-то начать – user2323