Ruby on rails 初学者轨道积垢
关于Ruby on rails 初学者轨道积垢,ruby-on-rails,ruby,forms,ruby-on-rails-4,crud,Ruby On Rails,Ruby,Forms,Ruby On Rails 4,Crud,关于new和create方法的快速入门问题。Ruby指南显示了以下示例: def new @article = Article.new end def create @article = Article.new(article_params) if @article.save redirect_to @article else render 'new' end end 在指南中的另一个例子中,@article=article.new语句没有在new方法
new
和create
方法的快速入门问题。Ruby指南显示了以下示例:
def new
@article = Article.new
end
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render 'new'
end
end
在指南中的另一个例子中,
@article=article.new
语句没有在new
方法中使用,这对我来说更有意义。新的视图不需要@article,
的表单u获取模型名称的参数,然后为表单方法定义一个变量,以便在| something
中使用。那么,为什么我们需要建立@article=article.new
并使@article
可用于视图?如果您正在编写一个表单来“创建”一篇文章,article类可能有一些默认值,您可能希望在表单中显示,这样您就不必在视图中处理它了
同样,无论您有什么默认设置,它都位于同一位置,您不需要更新两个文件。以下两个文件都是等效的-
1. form_for(@article...........) /* @article = Article.new */
2. form_for(:article...........)
有关更多详细信息,请参阅
但是,在Rails中,我们编写的是枯燥的代码。因此,我们使用相同的article\u表单
和实例变量@article
进行新建
和编辑
方法,是的,此实例变量在视图中可用-
def new
@article = Article.new /* this is new article */
end
def edit
@article = Article.find params[:id] /* Already exists in database */
end
并查看文件-
new.html.erb和edit.html.erb的格式相同
<%= render "article_form" %>
根据文档()的说明,您的表单(如果使用表单_for
创建)需要一个模型实例来将输入绑定到模型属性。通过这种方式,您可以说您有一个新的文章
实例,并且表单字段映射到其属性,因此当表单提交时,您将收到以下形式的参数:
articles: {attributte1: 'something', attributte2: 'somethingelse'}
通过这种方式,您可以通过说出@article=article.new(article_params)
来填充对象的实例,因为article_params
是在您的控制器中的某个位置填充的