charlie bowman
2006-May-26 00:48 UTC
[Rails] access a ActionControllers protected method from plugin?
I can''t belive I fit that in as the subject!
I''m writing a plugin that will allow me to grab some text from a
database and call the render method from ActionController on part of the
text. I can''t seem to figure out how to access the render method of
ActionController::Base. I keep getting the "uninitialized constant
Execute" error. How can I do this? I''m I even barking up the
right
tree? Here''s the relevent code
# ActsAsBlog - used to convert redcloth,markdown,smarty to html. also
evals <ruby> code and escpates html if needed
require ''active_record''
require ''action_controller''
class Execute < ActionController::Base
def self.execute_ruby_code( str )
logger.error(''test'')
str = str.gsub(/\<ruby\>(.*?)\<\/ruby\>/) do |match|
match = self.render(:inline => $1, :type => ''rhtml'')
logger.error(match)
end
str
end
end
module TextConversion
module Acts
module Blog
def self.included(base)
base.extend(ClassMethods)
end
def acts_as_blog
class_eval do
extend TextConversion::Acts::Blog::SingletonMethods
end
end
end
module SingletonMethods
def convert_to_html(txt, text_filter, restrictions = [])
txt = Execute.execute_ruby_code(txt)
end
return txt
end
end
end
end
--
Posted via http://www.ruby-forum.com/.
charlie bowman
2006-May-26 01:40 UTC
[Rails] Re: access a ActionControllers protected method from plugin?
I''ve decided to go about it a different way. I''m just trying
to access
the method directly from the plugin without inheriting from
ActionController. the ActionController::Base.render method fails now
because of this.
undefined method `render'' for ActionController::Base:Class
The method is actually in ActionController but it is marked as
protected, therefore I recieve the above error. How can I call this
method. How can I alias it as public for this plugin?
def execute_ruby_code( str )
logger.error(''test'')
str = str.gsub(/\<ruby\>(.*?)\<\/ruby\>/) do |match|
match = ActionController::Base.render(:inline => $1, :type =>
''rhtml'')
logger.error(match)
end
str
end
--
Posted via http://www.ruby-forum.com/.