这里有一段我不太理解的 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/