Forum: Ruby on Rails before_filter: how to give :except more than 1 value?

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Joshua M. (Guest)
on 2006-01-12 00:12
Hi all

I have the following class:

class MemberController < ApplicationController
  before_filter :authorize, :except => :index

  def index

Now I want to give the before_filter more than one :except argument. I
tried :except => {:index, :login}, but this didn't work.

How can i accomplish this?

Thanks a lot and have a nice day,
Maiha (Guest)
on 2006-01-12 00:17
try array.
  before_filter :authorize, :except =>[:index, :except]
Joshua M. (Guest)
on 2006-01-12 00:18
Maiha wrote:
> try array.
>   before_filter :authorize, :except =>[:index, :except]

Thank you. Is %w{ index, login } OK, too?
CSN (Guest)
on 2006-01-12 00:19
(Received via mailing list)
Try putting it in an array rather than a hash, e.g.

before_filter :authorize, :except => [:index, :login]

See under 'Filter Conditions':


--- Joshua M. <removed_email_address@domain.invalid> wrote:

> --
> Posted via
> _______________________________________________
> Rails mailing list
> removed_email_address@domain.invalid

Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around
Joshua M. (Guest)
on 2006-01-12 00:45
Thanks a lot.

But what exactly creates the array now and what the hash?

%w{} should create an array, right?
Damon C. (Guest)
on 2006-01-12 00:53
(Received via mailing list)
Joshua M. <forum@...> writes:

>   before_filter :authorize, :except => :index
before_filter :authorize, :except => [:index, :login]

Dudley F. (Guest)
on 2006-01-15 22:50
(Received via mailing list)
On Jan 11, 2006, at 4:45 PM, Joshua M. wrote:

> Thanks a lot.
> But what exactly creates the array now and what the hash?

The bare curlies create a hash, braces create an array.

> %w{} should create an array, right?

%w{index login} will also create an array, but be careful not to
do %w{index, login} with the comma because then the comma becomes
part of the first array element.

irb(main):001:0> a1 = ['index','login']
=> ["index", "login"]
irb(main):002:0> a2 = %w{index login}
=> ["index", "login"]
irb(main):003:0> a3 = %w{index, login}
=> ["index,", "login"]

Jules (Guest)
on 2006-01-15 22:56
And note that:

%w{index login}

creates this array:

['index', 'login']

and this:

[:index, :login]

creates an array of symbols rather than an array of strings.

That should not be a problem, however, because send() accepts strings
This topic is locked and can not be replied to.