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.


Reply via email to