respond_to
block where
render_ajax_dialog
is a helper specific to my project.
respond_to do |format| format.html {} format.js { render_ajax_dialog } endNow when the user clicks certain buttons on the dialog, I want to refresh the dialog from the server (i.e. Ajax) without reloading the underlying page and without the updating controller having to know anything about the dialog - basically the blind interacting with the blind.
Pop quiz: How do the blind interact in the stateless hyper text transfer protocol world?
My solution is to pass a parameter to the updating controller (
:redisplay
) with the URL to the action
which renders the dialog. It seems a bit messy, right? Maybe someone reading this has a better idea.
class DialogLoadingController < ApplicationController def show # load some foo respond_to do |format| format.html format.js { render_ajax_dialog } end end end class UpdatingThingsController < ApplicationController def update # update some foo respond_to do |format| format.html { redirect_to pop_return_to_or(foo_path) } format.js { if (redisplay = params[:redisplay]) show_dialog_url = ensure_format_js(redisplay) render :js => "$.ajax({url: '#{show_dialog_url}', cache: false});" end } end end private # In order for +respond_to+ to pick JS we need to ensure the URL # includes '.js'. The first call will not but subsequent calls will. # ensure_format_js('/path/to/foo?are_you_awesome=true') # # => /path/to/foo.js?are_you_awesome=true # # ensure_format_js('/path/to/foo.js?are_you_awesome=true') # # => /path/to/foo.js?are_you_awesome=true # # @param [String] url the redisplay URL # @return [String] Url with format .js specified def ensure_format_js(url) return nil unless url # split off query string, if any url = url.split '?' # check if JS specified if url.first.match(/.*\.js$/) # JS specified, re-join URL and query url.join('?') else # add JS and re-join url.first + '.js?' + url.last end end end
Our Gujarat Escorts Service Agency are tailored and structured for Escorts contact number in Goa those who are experiencing a Gujarat Housewife Escorts agency pitiable plight of the utmost sensual frustration in their lives and searching for something new to renovate and repair it.Model Call Girls in Agra Whosoever has opted for our Indian Escorts contact number in Indore, started admiring not only our beauty but also Escorts contact number in Haridwar the way with which we serve him in the bed.
ReplyDelete