实例variables与轨道上的ruby符号(form_for)

我是新的ruby在轨道上,我在mac osx上使用2.3版本。 我正在尝试创build一个脚手架创build的相同function,但我自己创build。 我创build了一个“后”控制器,视图和模型。 在后控制器,我有以下几点:

class PostController < ApplicationController def index end def new @post = Post.new end end 

在new.html.erb中,我有以下几点:

 <h1>New Post</h1> <% form_for :post do |f| %> <%= f.text_field :title %> <% end %> 

我注意到在脚手架生成的代码中,使用form_for帮助器的实例variables@post。 为什么他们在脚手架生成的forms使用实例variables,如果传递符号:post_form在form_for中完成同样的事情,而符号需要更改路由的configuration?

非常感谢你,yuval

如果您使用符号:发布创build

 <form action="/posts" method="post"> 

如果你使用实例@post

对于@post = Post.new你会得到

 <form action="/posts/create" class="new_account" id="new_account" method="post"> 

对于@post = Post.find(1)你会得到

 <form action="/posts/update" class="edit_account" id="edit_account_1" method="post"> <input name="_method" type="hidden" value="put"> 

如果你有新的不同的forms,你的编辑没有什么大不了,但更多的不是,你的新的和你的编辑forms将是相同的或接近它

所以如果你使用实例variables@post,你可以把所有的表单代码放到_form中,只要调用partial就可以了,如果你传入一个新的logging或一个已经存在的logging

一个可能的原因是它使表单的代码创build一个更类似于表单的代码更新现有的职位的新职位。