非常笼统的问题我希望有人可以为我澄清。我正在研究一个名为products的模型的基本生成的脚手架代码。我注意到控制器中的new和show动作没有写太多。事实上,show完全是空的,而new只有“@product = Product.new
”这一行。我知道这2个动作应该是单独的视图。显示资源的视图,以及分别输入信息和创建资源的新表单视图。
所以,我很好奇这是怎么发生的。其他操作有redirect_to:some_path是有道理的,但是当render action 'show', location: @product
“在操作为空时显示项目显示页面的确切方式是什么?那又与redirect_to @product
有何不同?
感谢
威尔
答案 0 :(得分:0)
Render生成一个字符串,该字符串将显示为对应用程序的请求的响应。
redirect_to会生成一个响应标头,从而导致向应用程序发出新请求。
render action 'show', location: @product
使用文件app/views/products/show.html.erb
和@product
作为参数来生成将返回的html。
某些控制器功能为空的原因是rails使用默认值。因此,如果您不告诉rails要渲染的内容,则rails会在适当的位置查找文件。
以redirect_to
结尾的方法通常是在数据库中保存某些内容的post / patch请求,并且在执行请求的操作后,它们会将用户重定向到用于显示信息的方法。