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]>
>> >
>> > > >.
>> > > > >> 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.
>> >
>> >
>>
>> --
>>
>> 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
>
--
-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.