Do anybody have any thoughts on this?
On Dec 31 2007, 7:12 pm, Mozmonkey
<JeremyMail...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> I''ve created a plugin to generate error pages with a single
function
> call. The basic idea is that in your action you could call
> error_forbidden and an error page would be rendered with the HTTP
> status code 402. This works great so far when called from within an
> action, but when I want to add the call to the "verfy" line,
things
> break:
>
> verify :method => :post, :only =>
> [ :create, :update, :destroy ], :render => { :text => error_invalid }
>
> Generates the error message: "undefined method
`error_invalid'' for
> EventsController:Class"
>
> I tried using "def self.included(base)" with "module
ClassMethods",
> which seemed to work except I got an error about "render" not
being
> defined.
>
> How can I make the methods visible to the controller outside the
> actions? For some reason I haven''t been able to make it work for
> both. Here''s the plugin:
>
> ####### init.rb #######
> require ''error_page''
> ActionController::Base.send :include, ErrorPagePlugin
>
> ####### error_page.rb #######
>
> # ErrorPage
> module ErrorPagePlugin
>
> #
> # The user is forbidden to perform this action
> #
> def error_forbidden(options={})
> options[:title] = options[:title] || "You do not have
> access to
> perform that action."
> options[:message] = options[:message] || "Make sure
> you''re logged in
> and have access to this feature."
> options[:template] = "errors/forbidden.rhtml"
>
> error_page(403, options)
> end
>
> #
> # Invalid form method (get, put, delete, post)
> #
> def error_invalid(options={})
> options[:title] = options[:title] || "Invalid
Action"
> options[:message] = options[:message] || "You have
> just tried to
> perform an action that is invalid for that item."
> options[:template] = "errors/invalid.rhtml"
>
> error_page(501, options)
> end
>
> #
> # Generate error page
> #
> def error_page(status=200, options={})
> @status = status
> @title = options[:title]
> @message = options[:message]
>
> @override_h1 = true
> @page_id = "pg_error"
>
> tmpl = options[:template] ||
"errors/generic.rhtml"
> render :status => status, :template => tmpl
> end
> end
>
> Thanks,
> Jeremy
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---