我刚刚在rails上使用
ruby,并且在Mac OSX上使用2.3版本.
我正在尝试创建一个脚手架创建的相同的功能,但是我自己.
我创建了一个“post”控制器,查看和模型.
在后台控制器中,我有以下内容:
我正在尝试创建一个脚手架创建的相同的功能,但是我自己.
我创建了一个“post”控制器,查看和模型.
在后台控制器中,我有以下内容:
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帮助使用了实例变量@post.为什么在脚本生成表单中使用实例变量,如果传递符号:在form_for中的post是完全相同的东西,而符号需要更改路由的配置?
非常感谢你,
尤瓦
解决方法
如果你使用符号:发布它创建
<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">
如果你有不同的形式为你的新的和你的编辑没有什么大不了,但更多的likey而不是你的新的和你的编辑表单将是相同或接近它
所以如果你使用实例变量@post,你可以把所有的表单代码放入_form,只需调用partial,它会处理其余的,如果你传入新记录或现有记录