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
是在您的控制器中的某个位置填充的