Ruby rails表单实例是如何工作的?

Ruby rails表单实例是如何工作的?,ruby,ruby-on-rails-4,Ruby,Ruby On Rails 4,我有两种方法,show和create def show @article = Article.find(params[:id]) @comment = Comment.new @comment.article_id = @article.id end def create @comment = Comment.new(comment_params) @comment.article_id = params[:article_id] @commen

我有两种方法,show和create

def show
    @article = Article.find(params[:id])
    @comment = Comment.new
    @comment.article_id = @article.id
end

def create
    @comment = Comment.new(comment_params)
    @comment.article_id = params[:article_id]
    @comment.save
    redirect_to article_path(@comment.article)
end
Show方法显示我的注释表单

在show方法中,我们为什么要创建
Comment
的新实例并关联注释 项目id的实例

Create方法实际上处理表单的提交

在create方法中,我再次创建一个新的comment对象,并再次关联该评论的article_id


我的全部问题是为什么我们要重复这些事情?。为什么我在显示我的评论表单时会将其与
文章id
相关联,并且在提交表单时也会重复这些步骤。

如果将这些资源嵌套并将表单构建为:

<%= form_for(@article, @article.comments.build) do |f| %>


希望这有帮助!:)

如果将这些资源嵌套,并将表单构建为:

<%= form_for(@article, @article.comments.build) do |f| %>


希望这有帮助!:)

如果将这些资源嵌套,并将表单构建为:

<%= form_for(@article, @article.comments.build) do |f| %>


希望这有帮助!:)

如果将这些资源嵌套,并将表单构建为:

<%= form_for(@article, @article.comments.build) do |f| %>


希望这有帮助!:)

两次初始化注释的原因都是因为用户的浏览器只看到html表单-它没有
注释的概念-并且因为对Rails应用程序的每个请求都是独立的-在请求之间应用程序中不会保留任何内容:

当用户为
文章
请求
显示
页面时,该请求由应用程序处理,如下所示:

  • 控制器创建一个新的
    注释
    对象(在内存中)
  • 视图中用于帮助者的
    表单\u将根据该
    注释
    构建表单
  • 显示
    页面的html将发送到用户浏览器
  • 此时,应用程序已经完成了为该请求提供服务所需的一切,因此临时
    注释
    对象被删除

    当用户提交表单时,输入的值将发送到
    comment_params
    中的应用程序,应用程序将按如下方式处理此请求:

  • 控制器创建一个新的
    Comment
    对象(再次在内存中),但使用用户在
    Comment\u参数中发送的数据对其进行初始化
  • 控制器保存
    注释
    ——这将
    注释
    存储在数据库中,以便以后加载
  • 控制器重定向回
    显示
    页面

  • 保存到数据库是应用程序在请求之间保存内容的主要方式—内存中的对象仅在处理请求时存在。

    两次初始化注释的原因是,用户的浏览器只看到html表单—它没有
    注释的概念,并且对Rails应用程序的每个请求都是独立的-在请求之间,应用程序中不会保留任何内容:

    当用户为
    文章
    请求
    显示
    页面时,该请求由应用程序处理,如下所示:

  • 控制器创建一个新的
    注释
    对象(在内存中)
  • 视图中用于帮助者的
    表单\u将根据该
    注释
    构建表单
  • 显示
    页面的html将发送到用户浏览器
  • 此时,应用程序已经完成了为该请求提供服务所需的一切,因此临时
    注释
    对象被删除

    当用户提交表单时,输入的值将发送到
    comment_params
    中的应用程序,应用程序将按如下方式处理此请求:

  • 控制器创建一个新的
    Comment
    对象(再次在内存中),但使用用户在
    Comment\u参数中发送的数据对其进行初始化
  • 控制器保存
    注释
    ——这将
    注释
    存储在数据库中,以便以后加载
  • 控制器重定向回
    显示
    页面

  • 保存到数据库是应用程序在请求之间保存内容的主要方式—内存中的对象仅在处理请求时存在。

    两次初始化注释的原因是,用户的浏览器只看到html表单—它没有
    注释的概念,并且对Rails应用程序的每个请求都是独立的-在请求之间,应用程序中不会保留任何内容:

    当用户为
    文章
    请求
    显示
    页面时,该请求由应用程序处理,如下所示:

  • 控制器创建一个新的
    注释
    对象(在内存中)
  • 视图中用于帮助者的
    表单\u将根据该
    注释
    构建表单
  • 显示
    页面的html将发送到用户浏览器
  • 此时,应用程序已经完成了为该请求提供服务所需的一切,因此临时
    注释
    对象被删除

    当用户提交表单时,输入的值将发送到
    comment_params
    中的应用程序,应用程序将按如下方式处理此请求:

  • 控制器创建一个新的
    Comment
    对象(再次在内存中),但使用用户在
    Comment\u参数中发送的数据对其进行初始化
  • 控制器保存
    注释
    ——这将
    注释
    存储在数据库中,以便以后加载
  • 控制器重定向回
    显示
    页面
  • 保存到数据库是应用程序在请求之间持久化内容的主要方式—内存中的对象仅在处理请求时存在。