Forums
New posts
Search forums
Members
Current visitors
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Menu
Log in
Register
Install the app
Install
Forums
Archive
Archive
Ruby
Store erb block and alter scope of erb block eval?
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
[QUOTE="Steve V, post: 4467106"] I tried posting this in the Rails list, and didn't get any responses, so maybe there's someone here that can help me with my problem. I'm trying to modularize some display functionality within my Rails app. I need to be able to store an erb block, and then evaluate it 1 or more times at a later point in time. Two questions here, which are driving me crazy! 1) How can I store an erb block captured using do for later use? Regular variable assignment doesn't appear to work. def content(&block) @raw_content = block end The above does not work. However, if I evaluate 'block' within the content method call, then the evaluation works. If I try to evaluate @raw_content at a later point through another function it just returns nothing. So how exactly do I store 'block' for later use? 2) When evaluating 'block', how can I get it to use the variables present within the scope of the calling function, or at least within the calling class? As it stands now, it will only take variables that have been defined in the controller, and not my class. rhtml file <%r = Renderer.new() r.content do%> <%=@sometext%> <%end%> <%=r.render()%> rb file class SomeController < ApplicationController def blah() @sometext = "blah" end end class Renderer def content(&block) @sometext = "content" buffer = eval("_erbout", block.binding); pos = buffer.length block.call @data = buffer[pos..-1] buffer[pos..-1] = "" end def render() @data end end The above will render "blah", and not "content", even if the definition of @sometext is removed from the controller, the eval will not take from the class. Any help would be greatly appreciated. Thanks, Steve [/QUOTE]
Verification
Post reply
Forums
Archive
Archive
Ruby
Store erb block and alter scope of erb block eval?
Top