Phew, that worked. Thank you so much Jonah! George
On Dec 17, 1:22 pm, jonah honeyman <[email protected]> wrote: > Use a touch of logic in the before hook: > > before Proc.new{ self.class.layout(request.ajax? ? false : :application) } > > On Thu, Dec 17, 2009 at 2:15 PM, George Adamson < > > > > [email protected]> wrote: > > Oh no! I take it back... > > This solution disabled layout for *all* requests to the controller, > > even those where request.ajax==false: > > before Proc.new{ self.class.layout(false) if request.ajax? } > > (Presumably it is not working because it is setting an attribute on > > the class and not the instance?) > > > The intention is to disable layout for any action when > > request.ajax==true. > > > Anyone else got a suggestion please?! > > > I found this related post but it suffers from the same 'undefined > > method' error described earlier: > > >http://groups.google.com/group/merb/browse_thread/thread/4b1d52a5e006... > > George > > > On Dec 17, 11:57 am, George Adamson <[email protected]> > > wrote: > > > Ah that did the trick, thanks Jonah and everyone! > > > > The solution is to use: > > > before Proc.new{ self.class.layout(false) if request.ajax? } > > > Much tidier than lots of conditions littering the controller actions. > > > > George > > > > On Dec 17, 10:32 am, jonah honeyman <[email protected]> > > > wrote: > > > > > Also, the before filter is run on the instance of the controller, while > > > > :layout is a class method. Your before filter should look like this: > > > > > before Proc.new{ self.class.layout(false) if request.ajax? } > > > > > On Thu, Dec 17, 2009 at 12:21 PM, jonah honeyman < > > > > > [email protected]> wrote: > > > > > You need to use 'layout(false)' not layout=false > > > > > > On Thu, Dec 17, 2009 at 11:27 AM, George Adamson < > > > > > [email protected]> wrote: > > > > > >> Thanks Yehuda, I tried it with self.layout=false but apparently the > > > > >> layout method does not exist: > > > > >> "undefined local variable or method `layout=' for #<Notes:0x1c98360> > > - > > > > >> (NameError)" > > > > > >> Is there something wrong with my syntax? > > > > > >> Here's the controller code: > > > > >> (I'm hoping to replace the commented 'request.ajax' conditions with > > > > >> one 'before' filter but the before filter causes the 'undefined' > > error > > > > >> on any action call) > > > > > >> class Notes < Application > > > > > >> before Proc.new{ self.layout = false if request.ajax? } > > > > > >> def index > > > > >> �...@notes = Note.all > > > > >> display @notes #, request.ajax? ? { :layout=>false } : nil > > > > >> end > > > > > >> def edit(id) > > > > >> only_provides :html > > > > >> �...@note = Note.get(id) > > > > >> raise NotFound unless @note > > > > >> display @note #, request.ajax? ? { :layout=>false } : nil > > > > >> end > > > > > >> ...etc... > > > > >> end > > > > > >> George > > > > > >> On Dec 16, 5:33 pm, Yehuda Katz <[email protected]> wrote: > > > > >> > Oh noes. Trapped by the Ruby local variable ambiguity. You'll need > > > > >> > self.layout=, as layout = defines a local in the proc's scope. > > > > > >> > Yehuda Katz > > > > >> > Developer | Engine Yard > > > > >> > (ph) 718.877.1325 > > > > > >> > On Wed, Dec 16, 2009 at 12:08 PM, George Adamson < > > > > > >> > [email protected]> wrote: > > > > >> > > I'm trying the following but it does not seem to have any > > effect: > > > > > >> > > class Notes < Application > > > > >> > > before Proc.new { layout = false if request.ajax? } > > > > >> > > ... > > > > > >> > > I must be missing something?! > > > > >> > > Cheers, > > > > >> > > George > > > > > >> > > On Dec 15, 1:43 am, 刘松 <[email protected]> wrote: > > > > >> > > > It need change "how to find the default layout if not > > specified by > > > > >> render > > > > >> > > > method" in merb. > > > > >> > > > By now, it only search layout by inheritance order? > > > > > >> > > > Use a before filter will work, but not as good. > > > > > >> > > > I have no more suggestion because I know less about merb's > > code. > > > > > >> > > > On Tue, Dec 15, 2009 at 6:14 AM, Nicholas Orr < > > > > >> [email protected] > > > > >> > > >wrote: > > > > > >> > > > > use a before filter? > > > > > >> > > > > 2009/12/15 George Adamson <[email protected] > > > > > >> > > > > Instead of checking request.ajax (or request.xhr) before > > deciding > > > > >> > > > >> whether to set layout=false, is it possible to have this > > happen > > > > >> > > > >> automatically? Is there somewhere I can set this more > > generically > > > > >> to > > > > >> > > > >> apply to all actions? > > > > > >> > > > >> I only ask because it seems like a lot of repeated code to > > be > > > > >> testing > > > > >> > > > >> in every controller action? > > > > > >> > > > >> Cheers, > > > > > >> > > > >> George > > > > > >> > > > >> -- > > > > > >> > > > >> You received this message because you are subscribed to the > > > > >> Google > > > > >> > > Groups > > > > >> > > > >> "merb" group. > > > > >> > > > >> To post to this group, send email to [email protected] > > . > > > > >> > > > >> To unsubscribe from this group, send email to > > > > >> > > > >> [email protected]<merb%[email protected]> > > <merb%[email protected]<merb%[email protected]> > > > > > >> <merb%[email protected]<merb%[email protected]> > > <merb%[email protected]<merb%[email protected]> > > > > > >> >< > > > > >> > > merb%[email protected]<merb%[email protected]> > > <merb%[email protected]<merb%[email protected]> > > > > > >> <merb%[email protected]<merb%[email protected]> > > <merb%[email protected]<merb%[email protected]> > > > > > >> > > >. > > > > >> > > > >> For more options, visit this group at > > > > >> > > > >>http://groups.google.com/group/merb?hl=en. > > > > > >> > > > > -- > > > > >> > > > > You received this message because you are subscribed to the > > Google > > > > >> > > Groups > > > > >> > > > > "merb" group. > > > > >> > > > > To post to this group, send email to [email protected]. > > > > >> > > > > To unsubscribe from this group, send email to > > > > >> > > > > [email protected]<merb%[email protected]> > > <merb%[email protected]<merb%[email protected]> > > > > > >> <merb%[email protected]<merb%[email protected]> > > <merb%[email protected]<merb%[email protected]> > > > > > >> >< > > > > >> > > merb%[email protected]<merb%[email protected]> > > <merb%[email protected]<merb%[email protected]> > > > > > >> <merb%[email protected]<merb%[email protected]> > > <merb%[email protected]<merb%[email protected]> > > > > > >> > > >. > > > > >> > > > > For more options, visit this group at > > > > >> > > > >http://groups.google.com/group/merb?hl=en. > > > > > >> > > -- > > > > > >> > > You received this message because you are subscribed to the > > Google > > > > >> Groups > > > > >> > > "merb" group. > > > > >> > > To post to this group, send email to [email protected]. > > > > >> > > To unsubscribe from this group, send email to > > > > >> > > [email protected]<merb%[email protected]> > > <merb%[email protected]<merb%[email protected]> > > >< > > > > >> merb%[email protected]<merb%[email protected]> > > <merb%[email protected]<merb%[email protected]> > > > > > >> >. > > > > >> > > For more options, visit this group at > > > > >> > >http://groups.google.com/group/merb?hl=en. > > > > > >> -- > > > > > >> You received this message because you are subscribed to the Google > > Groups > > > > >> "merb" group. > > > > >> To post to this group, send email to [email protected]. > > > > >> To unsubscribe from this group, send email to > > > > >> [email protected]<merb%[email protected]>< > > merb%[email protected]<merb%[email protected]> > > >. > > > > >> For more options, visit this group at > > > > >>http://groups.google.com/group/merb?hl=en. > > > > > > -- > > > > > -jonah > > > > > -- > > > > -jonah > > > -- > > > You received this message because you are subscribed to the Google Groups > > "merb" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected] <merb%[email protected]>. > > For more options, visit this group at > >http://groups.google.com/group/merb?hl=en. > > -- > -jonah -- You received this message because you are subscribed to the Google Groups "merb" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/merb?hl=en.
