Ruby on rails 控制器操作new和create使用相同的新方法有什么意义?
我一直在编写几个rails教程,我不明白为什么方法Ruby on rails 控制器操作new和create使用相同的新方法有什么意义?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我一直在编写几个rails教程,我不明白为什么方法new和方法create都有 @example = Example.new 当控制器的所有操作都是呈现新建页面时,新建方法具有@example=example.new的意义是什么 @example=example.new意思是准备表单,以便用户可以在表单中填写数据,@example instance将保留该值 创造 @example=example.new意味着创建新对象将数据保存到create@examle.save内的数据库中,这将保存从n
new
和方法create
都有
@example = Example.new
当控制器的所有操作都是呈现新建
页面时,新建
方法具有@example=example.new
的意义是什么
@example=example.new意思是准备表单,以便用户可以在表单中填写数据,@example instance将保留该值
创造
@example=example.new意味着创建新对象将数据保存到create@examle.save内的数据库中,这将保存从new(通过参数)传递的数据。new
@example=example.new意思是准备表单,以便用户可以在表单中填写数据,@example instance将保留该值
创造
@example=example.new意味着创建新对象将数据保存到create内的数据库通常是@examle.save,这将保存从new(通过参数)传递的数据。在Rails的REST new和create实现中,这些数据将被区别对待 HTTP GET to/resources/new旨在呈现一个适合创建新资源的表单,它通过在控制器内调用new操作来实现,该操作创建一个新的未保存记录并呈现表单 HTTP POST to/resources获取作为新操作的一部分创建的记录,并将其传递给控制器内的create操作,然后控制器尝试将其保存到数据库 在Ruby on Rails文档中,关于: 创建(attributes=nil){|对象|……} 如果验证通过,则创建一个对象(或多个对象)并将其保存到数据库中。无论对象是否成功保存到数据库,都会返回结果对象 在Ruby on Rails文档中,关于: 新的(attributes=nil){如果给定块| | self?|…} 新对象可以实例化为空(不传递构造参数)或使用属性预设但尚未保存(传递具有与相关表列名匹配的键名的哈希)。在这两种情况下,有效的属性键都是由关联表的列名决定的,因此不能有不属于表列的属性
因此,
create
实例化新对象,对其进行验证,然后将其保存到数据库中。和new
只创建本地对象,而不尝试验证或将其保存到数据库。在Rails的REST new和create实现中,处理方式不同
HTTP GET to/resources/new旨在呈现一个适合创建新资源的表单,它通过在控制器内调用new操作来实现,该操作创建一个新的未保存记录并呈现表单
HTTP POST to/resources获取作为新操作的一部分创建的记录,并将其传递给控制器内的create操作,然后控制器尝试将其保存到数据库
在Ruby on Rails文档中,关于:
创建(attributes=nil){|对象|……}
如果验证通过,则创建一个对象(或多个对象)并将其保存到数据库中。无论对象是否成功保存到数据库,都会返回结果对象
在Ruby on Rails文档中,关于:
新的(attributes=nil){如果给定块| | self?|…}
新对象可以实例化为空(不传递构造参数)或使用属性预设但尚未保存(传递具有与相关表列名匹配的键名的哈希)。在这两种情况下,有效的属性键都是由关联表的列名决定的,因此不能有不属于表列的属性
因此,create
实例化新对象,对其进行验证,然后将其保存到数据库中。和new
仅创建本地对象,而不尝试验证或将其保存到数据库
当控制器的所有操作都是呈现新页面时,新方法有@example=example.new的意义是什么
因为它使用@example
对象的属性呈现页面
您可能假设在新初始化的对象上,所有属性的值都为nil。不一定是这样,因为模型中的代码(例如,初始化后的回调,或枚举
)可能提供默认值
在某些情况下,控制器代码本身也可能提供默认值,从当前用户推断或通过参数传入
当控制器的所有操作都是呈现新页面时,新方法有@example=example.new的意义是什么
因为它使用@example
对象的属性呈现页面
您可能假设在新初始化的对象上,所有属性的值都为nil。不一定是这样,因为模型中的代码(例如,初始化后的回调,或枚举
)可能提供默认值
在某些情况下,控制器代码本身也可能提供默认值,可以从当前用户推断,也可以通过参数传入。您将拥有如下方法:
def create
@example = Example.new(example_params)
if @example.save
redirect_to @example
else
render 'new'
end
end
注意,在create
操作中,当save返回false
时,将使用render
而不是redirect\u to
。使用render
方法,以便在渲染时将@example
对象传递回新模板
您需要告诉用户出了问题。为此,您将修改app/views/examples/new.html.erb以检查错误消息:
<% if @example.errors.any? %>
<div id="error_explanation">
...
</div>
<% end %>
...
我们检查是否有