Abrir un formulario rails con modales de Bootstrap - LPC-Ltda/Ruby-on-Rails GitHub Wiki

Algunas veces requerimos abrir un formulario o desplegar información en una ventana modal, les mostraré una forma simple de usar las modales de twitter bootstrap.

Primero asegúrese de haber agregado la gema bootstrap-sass a su archivo gemfile y también de haber usado bundle para instalar la gema.

También es su archvo application.js incluya la llamada al archivo javascript bootstrap-modal en la siguiente forma.

//= require bootstrap-modal

Ahora en el archivo routes.rb agregue la ruta al partial que usted desea mostrar como modal, por ejemplo:

get "project/new_release" => 'project#new_release', :as => :new_release

En el controlador agregue el block respond_to para usar algo de magia ajax.

  def new_release
    respond_to do |format|
      format.html
      format.js
    end
  end

En la view llamante use el helper link_to en la siguiente forma:

<%= link_to 'Add release', new_release_path,  {:remote => true, 'data-toggle' =>  "modal", 'data-target' => '#modal-window'}  %>

Necesitamos tener un DIV en la view llamante que cargue el partial como la ventana modal, así que haremos algo como esto:

<div id="modal-window" class="modal hide fade" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"></div>

Vamos a poner el formulario partial dentro del div con jquery.

Asegúrese de tener el partia, en este caso debería tener un nombre de archivo _new_release.html.erb, dentro de él usted deberá tener el contenido que desea mosatrar como ejemplo:

<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
    <h3 id="myModalLabel">Modal header</h3>
 </div>
 <div class="modal-body">
    **here comes whatever you want to show!**
 </div>
 <div class="modal-footer">
    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
    <button class="btn btn-primary">Save changes</button>
 </div>

Ahora necesitamos algo de javascript para hacer este trabajo, hagamos un archivo llamado como el action del controlador pero con el sufijo .js.erb para este ejemplo debe ser:

new_release.js.erb

Y dentro del archivo agregue lo siguiente:

$("#modal-window").html("<%= escape_javascript(render 'project/new_release') %>");

Esto es, ahora cuando usted clickee sobre el link una linda modal se mostrará con un efecto fade muy limpio.

⚠️ **GitHub.com Fallback** ⚠️