Ruby on rails 为什么在rails控制器中创建强参数而不是新参数?

Ruby on rails 为什么在rails控制器中创建强参数而不是新参数?,ruby-on-rails,controller,Ruby On Rails,Controller,我不明白为什么在一个示例中,create方法使用强参数,而new方法没有 def new @article = Article.new end def create @article = Article.new(article_param) if @article.save redirect_to @article else render "new"

我不明白为什么在一个示例中,create方法使用强参数,而new方法没有

   def new
        @article = Article.new
    end

    def create
        @article = Article.new(article_param)
        if @article.save
            redirect_to @article
        else
            render "new"
        end
    end

新方法只是实例化一个新对象。create方法负责分配属性并将其写入数据库

调用.new后,您的文章只是一个空壳,因此不需要参数

使用新文章是为了使页面能够呈现正确的形式。此外,在新操作中,控制器中没有任何参数,用户只需单击一个新按钮,就可以接收创建新文章的视图


您的参数表示用户输入的数据,在表单提交后才出现。

新方法只是实例化了一个新对象。create方法负责分配属性并将其写入数据库

调用.new后,您的文章只是一个空壳,因此不需要参数

使用新文章是为了使页面能够呈现正确的形式。此外,在新操作中,控制器中没有任何参数,用户只需单击一个新按钮,就可以接收创建新文章的视图


您的参数代表用户输入的数据,在表单提交后才出现。

新方法是用户输入数据的表单本身。它是通过创建方法提交的,在该方法中,应用程序将识别表单的规格,并接受或拒绝用户输入的元素。例如,如果您将一个整数分配给一个表元素,并且用户在表单中输入了一个浮点/十进制,那么新表单将接受输入,但实际上仅在视图中呈现该数字时创建一个不带十进制的整数。

新方法是用户输入数据的表单本身。它是通过创建方法提交的,在该方法中,应用程序将识别表单的规格,并接受或拒绝用户输入的元素。例如,如果您将一个整数分配给一个表元素,并且用户在表单中输入一个浮点/十进制,那么新表单将接受该输入,但实际上仅在视图中呈现该数字时创建一个不带十进制的整数。

因为在更新或创建记录之前存在白名单参数。在启用
new
edit
操作时,没有对db记录执行任何操作,并且不需要将任何参数列入白名单。在
更新
创建
控制器动作时,db上有动作,禁止任何未列入白名单的参数

也显示相同的定义:“对于强参数,在将动作控制器参数列入白名单之前,禁止在活动模型质量分配中使用它们。这意味着您必须有意识地选择允许批量更新的属性,从而防止意外暴露不应暴露的属性。”

最常见的例子是:在浏览器中,您可以编辑字段名并将
更改为
,然后在表单中将值更改为“1”并提交。无强参数
用户[:admin]
是一个有效的参数,可以在数据库中进行更改。此外,在
新建
编辑
操作中,不会对数据库造成任何影响,因为您只向浏览器发送表单。

因为在更新或创建记录之前有白名单参数。在
新建
编辑
操作时在db记录上没有任何操作,也没有必要将任何参数列为白名单。在
更新
创建
控制器操作上,在db上有操作,禁止任何未列为白名单的参数

还显示相同的定义:“对于强参数,动作控制器参数在被列入白名单之前,禁止在活动模型质量指定中使用。这意味着您必须有意识地选择允许批量更新的属性,从而防止意外暴露不应暴露的属性。”

最常见的例子是:在浏览器中,您可以编辑字段名并将
更改为
,然后在表单中将值更改为“1”并提交。无强参数
用户[:admin]
是有效参数,可在数据库中更改。此外,在
新建
编辑
操作中,不会对数据库造成任何影响,因为您只向浏览器发送表单