Views and bindings

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?

Let me know if I can clarify anything for you.

Thanks!

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

Fred

Frederick Cheung wrote: