简体   繁体   中英

Call bootstrap modal from view on condition in Rails

First, I explain what I want to do : when user enters wrong values in sign_in or sign_up popup form(Bootstrap modal) I should call $("#sign_up").show(); or $("#login").show();.

So, I need to call js from views: I see it like this:

  <%= devise_error_messages! //here call $("#sign_up").show(); %>

or other way, but almost the same, but withous devise_error

  <% if @user.errors.any? %>
<%"eval('$("#sign_up").show();')"%> 

or how it should be...

I should rewrite my registration or not ?

Correct me please, I can't get how do it.

If I understand the question you do not need to call the modal. Just do not hide it after the page loads. That is, there must be something like this:

<% if @user.errors.any? %>
  <div id="myModal" class="modal">
<% else %>
  <div id="myModal" class="modal hide">
<% end %>
    #your modal here
  </div>

But in general I would advise to use Ajax and respond with js in create action that render form inside your modal:

#create action
respond_to do |format|
  if @user.save
    ...
  else
    ...
    format.js { render action: "new" }
  end


#new.js.erb
$('#myModal').html("<%= j render 'form' %>");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM