why do we use form_for @story do |f| when there is no loop?

we use

(1..10).each do |i|   p i end

so that a value is "yield" to i in a block...

but what about

<% form_for @story do |f| %>   <%= f.text_field %> <% end %>

there is no loop at all... why do we need to make it look like a loop? Can't we do it without making it look like a loop? (write in another way)?

Also, must be use a Story instance here? Can't we just use :story and achieve the same result? The @story instance is just newly created and has no data at all -- does it actually help creating the form? Can't :story suffice already? thanks.

Both these examples of code use blocks, the first just happens to be a loop, the second only looks like a loop if your first experience of blocks is in loops.

I think it's important that you forget about the loop and focus on blocks, once you've understood blocks, it will no longer look like a loop and you'll understand that you really don't want to write it a different way (even though it's possible)

Yes, you can use @story or :story and form_for will figure it out for you. Mostly it depends on where you're using the form, new or edit etc.

Andrew Timberlake http://ramblingsonrails.com

http://MyMvelope.com - The SIMPLE way to manage your savings

Andrew Timberlake wrote:

I think it's important that you forget about the loop and focus on blocks, once you've understood blocks, it will no longer look like a loop and you'll understand that you really don't want to write it a different way (even though it's possible)

can i use something like: (just pseudo code)

with (@story) do |f|   f.begin_form   f.textfield :name   f.end_form end

so i think the block method will save the begin_form and end_form because it automatically add the begin and end before calling the block. is that the main benefit?