Ruby on rails 为什么在rails控制器中创建强参数而不是新参数?
我不明白为什么在一个示例中,create方法使用强参数,而new方法没有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"
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]
是有效参数,可在数据库中更改。此外,在新建
或编辑
操作中,不会对数据库造成任何影响,因为您只向浏览器发送表单