I want to have some RJS executed whenever an xhr request is made. My initial thought was an "application.rjs" might do this, however that does not seem to be the case. Is there a way to set up some RJS that is executed whenever RJS is fired? I have code that I don''t want to repeat all over the place? Failing the above. I thought adding a helper function the application.rb and calling that from each .rjs file. However this does not work either. Is there a way to call a method defined in applicaiton.rb from any .rjs file? thanks! -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
in your controller try something like this. format.js { render :template => "shared/error.js.rjs" } John I On Feb 16, 10:03 am, John Lane <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> I want to have some RJS executed whenever an xhr request is made. My > initial thought was an "application.rjs" might do this, however that > does not seem to be the case. > > Is there a way to set up some RJS that is executed whenever RJS is > fired? I have code that I don''t want to repeat all over the place? > > Failing the above. I thought adding a helper function the application.rb > and calling that from each .rjs file. However this does not work either. > Is there a way to call a method defined in applicaiton.rb from any .rjs > file? > > thanks! > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Not sure I understand you John - can you clarify what you mean by> in your controller try something like this. > > format.js { render :template => "shared/error.js.rjs" }Are you saying put something in my application controller (if so, where?) or in the controller action method that is being fired before the controller/action.rjs file is executed? If it''s the latter then that would mean repearing it on every action that has RJS. What I''m really looking for is if Rails has a way of invoking a common RJS file on every RJS action. My reasoning for this is there are "core" tasks that I''d like to do using Ajax, such as showing/hiding my flash bar depending on whether there is a message to display. Many thanks for your help. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 16 Feb 2008, at 16:03, John Lane wrote:> > I want to have some RJS executed whenever an xhr request is made. My > initial thought was an "application.rjs" might do this, however that > does not seem to be the case. > > Is there a way to set up some RJS that is executed whenever RJS is > fired? I have code that I don''t want to repeat all over the place? > > Failing the above. I thought adding a helper function the > application.rb > and calling that from each .rjs file. However this does not work > either. > Is there a way to call a method defined in applicaiton.rb from > any .rjs > file? >put this in your application.rb (or any appropriate helper file) def some_common_stuff update_page do |page| page.some_rjs_stuff ... end end Then in your rjs files you can do page << some_common_stuff Fred> thanks! > -- > Posted via http://www.ruby-forum.com/. > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> put this in your application.rb (or any appropriate helper file) > > def some_common_stuff > update_page do |page| > page.some_rjs_stuff > ... > end > end > > Then in your rjs files you can do > > page << some_common_stuff > > FredHere is what I tried. I put this method within my application.rb : def rjs_update_flash put "rjs update flash" update_page do |page| unless flash.empty? if flash[:error] page.replace_html(''alert_panel_message'', "<p class=''alert_error''><img src=''/images/warning_sign.jpg'' alt=''!''>#{flash[:error]}</p>") elsif flash[:notice] page.replace_html(''alert_panel_message'', "<p class=''alert_notice''>#{flash[:notice]}</p>") end page.show(''alert_panel'') else page.hide(''alert_panel'') end end end And, in my rjs file: page << rjs_update_flash My log shows a 500 internal error. I also tried putting the method in application_helper.rb but that didn''t work either. Have I done something wrong? -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
This was modified from peepcodes RJS screencast ( I updated it for rails 2) http://peepcode.com/products/rjs-templates They use a task list for the demo. In the tasks_controller ------------------------------------------------------------- # POST /tasks # POST /tasks.xml def create @task = Task.new(params[:task]) respond_to do |format| if @task.save calculate_totals flash[:notice] = ''Task was successfully created.'' format.html { redirect_to(@task) } format.xml { render :xml => @task, :status => :created, :location => @task } format.js else format.html { render :action => "new" } format.xml { render :xml => @task.errors, :status => :unprocessable_entity } format.js { render :template => "shared/error.js.rjs" } end end end # PUT /tasks/1 # PUT /tasks/1.xml def update @task = Task.find(params[:id]) respond_to do |format| if @task.update_attributes(params[:task]) flash[:notice] = ''Task was successfully updated.'' format.html { redirect_to(@task) } format.xml { head :ok } else format.html { render :action => "edit" } format.xml { render :xml => @task.errors, :status => :unprocessable_entity } format.js { render :template => "shared/error.js.rjs" } end end end ------------------------------------------------------------- When ever something is not saved or updated VIA AJAX if fires the shared/error.js.rjs file I gues this could be DRYed up. the shared/error.js.rjs file just has page.alert "An error happened!" HTH John Ivanodd On Feb 18, 3:25 pm, John Lane <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > put this in your application.rb (or any appropriate helper file) > > > def some_common_stuff > > update_page do |page| > > page.some_rjs_stuff > > ... > > end > > end > > > Then in your rjs files you can do > > > page << some_common_stuff > > > Fred > > Here is what I tried. I put this method within my application.rb : > > def rjs_update_flash > put "rjs update flash" > update_page do |page| > unless flash.empty? > if flash[:error] > page.replace_html(''alert_panel_message'', "<p > class=''alert_error''><img src=''/images/warning_sign.jpg'' > alt=''!''>#{flash[:error]}</p>") > elsif flash[:notice] > page.replace_html(''alert_panel_message'', "<p > class=''alert_notice''>#{flash[:notice]}</p>") > end > page.show(''alert_panel'') > else > page.hide(''alert_panel'') > end > end > end > > And, in my rjs file: > > page << rjs_update_flash > > My log shows a 500 internal error. > > I also tried putting the method in application_helper.rb but that didn''t > work either. > > Have I done something wrong? > > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 18 Feb 2008, at 21:25, John Lane wrote:> > > And, in my rjs file: > > page << rjs_update_flash > > My log shows a 500 internal error. > > I also tried putting the method in application_helper.rb but that > didn''t > work either. > > Have I done something wrong? > >It definitely should be application_helper (my bad, not quite typing what i was thing). It would be awfully helpful to know what the error was (check the log files) Fred --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> > page << rjs_update_flash > > My log shows a 500 internal error. > > I also tried putting the method in application_helper.rb but that > > didn''t > > work either.This does work (on Rails 2.0.2 at least): in application_helper.rb: module ApplicationHelper def display_flash(flash) page.replace_html(''FlashPane'', flash[:notice]) end end in your "create.js.rjs" file: page.display_flash(flash) You need to pass the flash hash in specifically. I am using this now, it works really nicely - not just for flash, you can put any RJS in there you want. Mikel http://lindsaar.net/ --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---