hello all, I was hoping someone could describe to me how this works.
Say I have some block of code like this
<% my_cool_block do %>
<% my_var = 5 %>
<%= some_helper_method "My var" %>
<% end %>
And in my helper
def my_cool_block(&block)
content = capture(&block)
concat(content, block.binding)
end
def some_helper_method(text)
"#{text} = #{my_var}
end
How can i get some_helper_method to 'know' about my_var which is in the
scope of the my_cool_block block? And even better yet, how could I get
the some_helper_method only to work when it is nested inside a
my_cool_block block?
hello all, I was hoping someone could describe to me how this works.
Say I have some block of code like this
<% my_cool_block do %>
<% my_var = 5 %>
<%= some_helper_method "My var" %>
<% end %>
And in my helper
def my_cool_block(&block)
content = capture(&block)
concat(content, block.binding)
end
def some_helper_method(text)
"#{text} = #{my_var}
end
How can i get some_helper_method to 'know' about my_var which is in the
scope of the my_cool_block block? And even better yet, how could I get
the some_helper_method only to work when it is nested inside a
my_cool_block block?
Well you could probably do it by messing around with bindings and eval
but that sounds like a sucky design. why not do something similar to
form_for, ie your my_cool_block method yields an object encapsulating
the state you want to share in its instance variables. usage could be
<% my_cool_block(5) do |helper| %>
<%= helper.some_helper_method "My var %>
<% end %>
you could do other stuff too, eg call helper.with_value(5) and for the
block passed to with_value, my_var would have value 5