Copying controller methods to helpers


#1

I have a case where replicas of certain controller methods would be
useful within the view. In particular, these are role-based user-access
methods.

For example:
can_view?
can_modify?

These will be methods setup in the AccountSystem module which is
included in the ApplicationController. These methods will be used as
before_filters to determine if the user has access to do a certain thing
or not.

I would also like to provide these same methods to my views, but I don’t
quite understand how the scope will work.

My views don’t have access to the “can_view?” from AccountSystem. But
if I put a can_view? method in a helper, how would it call the can_view?
from AccountSystem?

Also, would there be a simple way to duplicate these in one fell-swoop
to get all the methods copied over?

Jake


#2

On 1/20/07, Jake J. removed_email_address@domain.invalid wrote:

I would also like to provide these same methods to my views, but I don’t
quite understand how the scope will work.

In your ApplicationController:

helper_method :can_view?, :can_modify?


Chris W.
http://errtheblog.com


#3

On Sun, 2007-01-21 at 01:50 -0800, Chris W. wrote:

Chris W.
http://errtheblog.com

Ok Chris, I like helper method, but sometimes the list grows too long.

I used to have following code in my application.rb

helper_method
:current_url,:rand_between,:url_without_port,:market_open_time_in_utc,:market_close_time_in_utc,:market_current_time_in_utc,:market_local_time_as_str,:redirect_to_login,:current_domain,:diode,:triode,:pipe_val

in those cases, what would the best approach? Moving them to a plugin?


#4

On Jan 21, 2007, at 11:14 AM, Hemant K. wrote:

helper_method :can_view?, :can_modify?
helper_method :current_url,:rand_between,:url_without_port,:market_ope
n_time_in_utc,:market_close_time_in_utc,:market_current_time_in_utc,:m
arket_local_time_as_str,:redirect_to_login,:current_domain,:diode,:tri
ode,:pipe_val

in those cases, what would the best approach? Moving them to a plugin?

Hemant-

You could store all of those methods in a module name
WhateverModule. Then just include that in yoru controller and view
helpers and it will bve shared without all the ugly helper calls:

module WhateverModule
def some_methods
end
end

class ApplicationController < …
include WhateverModule
end

module ApplicationHelper
include WhateverModule
end

Cheers-
– Ezra Z.
– Lead Rails Evangelist
– removed_email_address@domain.invalid
– Engine Y., Serious Rails Hosting
– (866) 518-YARD (9273)


#5

On Sun, 2007-01-21 at 15:28 -0800, Ezra Z. wrote:

class ApplicationController < …
include WhateverModule
end

module ApplicationHelper
include WhateverModule
end

Hmm makes sense.

Thanks.