ruby-on-rails - 为什么在 ruby​​ on rails 的 Controller 类中的 new 和 create 函数中创建了两个模型对象,而不是只使用一个?

标签 ruby-on-rails ruby controllers

这里有一段我​​不太理解的 Controller 类的代码。

我看到在新方法中创建了一个新的 Article 对象,并传递给表单使用它的相应 View 。

但我不明白为什么在 create 方法中使用从表单传递的参数创建另一个 Article 对象,而不是只使用在 new 中实例化的同一个对象。

(请注意,我是 Ruby on Rails 的新手,来自 Java 和 C++ 的面向对象世界。所以,我真的很关心对象引用和其他东西)

# GET /articles/new

  def new

    @article = Article.new

  end


  # POST /articles

  # POST /articles.json

  def create

    @article = Article.new(article_params)

    respond_to do |format|
      if @article.save
        format.html { redirect_to @article, notice: 'Article lll was successfully created.' }
        format.json { render :show, status: :created, location: @article }
      else
        format.html { render :new }
        format.json { render json: @article.errors, status: :unprocessable_entity }
      end
    end
  end

最佳答案

在新 Action 中,没有创建文章。它被初始化。该对象用于向用户显示表单。

在创建 Action 中,首先使用用户请求参数初始化文章对象,然后调用@article.save保存

需要初始化两次是因为 Controller 在每次请求时都被初始化,并且实例变量在请求之间不可用。

关于ruby-on-rails - 为什么在 ruby​​ on rails 的 Controller 类中的 new 和 create 函数中创建了两个模型对象,而不是只使用一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26668199/

相关文章:

grails - Grails遍历 Controller 中的对象

ruby-on-rails - Rails RESTful URL 的 : All Posts under certain Category

ruby-on-rails - 使用 uuid-ossp 在 Rails 中将模型 id 更改为 uuid

ruby-on-rails - 使用自定义 authlogic 错误消息

ruby-on-rails - 第一次安装 Rails,帮助 gem /rake

ruby - 如何使用 'do' 关键字语法创建接受匿名函数的函数?

Ruby:如何以编程方式要求已安装的 GEM?

ruby-on-rails - 访问父对象属性的 "rails way"是什么?

c# - 为什么这个可选参数 LINQ WHERE 不起作用?

php - 什么是模型,什么不是模型 php