A tiny Rails engine that helps you loading remote links into a bootstrap modal.
A tiny Rails engine that helps you loading remote links into a bootstrap modal.
It was created based on the following post: https://jtway.co/5-steps-to-add-remote-modals-to-your-rails-app-8c21213b4d0c
Add this line to your application's Gemfile:
bundle add remote_bootstrap_modal
<div id="modal-holder"></div>
to your application layout (the modal will be rendered inside it)//= require remote_bootstrap_modal
to your app/assets/javascripts/application.js
(after jquery)respond_to
(ex: respond_to :html, :json
)respond_modal_with
in your controller passing the arguments you needdata: { modal: true }
to links you want to load into a modal (ex: link_to 'Customers', customers_path, class: 'btn btn-default', data: { modal: true }
)# app/controllers/messages_controller.rb
class MessagesController < ApplicationController
respond_to :html, :json
def new
@message = Message.new
respond_modal_with @message
end
def create
@message = Message.create(message_params)
respond_modal_with @message, location: messages_path
end
private
def set_message
@message = Message.find(params[:id])
end
def message_params
params.require(:message).permit(:name, :body)
end
end
<%# app/views/messages/index.html.erb %>
<%= link_to 'Add Message', new_message_path, class: 'btn', data: { modal: true } %>
<%# app/views/messages/_form.html.erb %>
<%= simple_form_for(@message, remote: request.xhr?, html: { data: { modal: true } }) %>
It is an engine, you can override any file to customize, you can create a app/views/layouts/modal.html.erb
for instance with the modal layout you want.
The gem is available as open source under the terms of the MIT License.