Rails - 节目和新动作如何工作

时间:2014-11-04 20:00:43

标签: ruby-on-rails

非常笼统的问题我希望有人可以为我澄清。我正在研究一个名为products的模型的基本生成的脚手架代码。我注意到控制器中的new和show动作没有写太多。事实上,show完全是空的,而new只有“@product = Product.new”这一行。我知道这2个动作应该是单独的视图。显示资源的视图,以及分别输入信息和创建资源的新表单视图。

所以,我很好奇这是怎么发生的。其他操作有redirect_to:some_path是有道理的,但是当render action 'show', location: @product“在操作为空时显示项目显示页面的确切方式是什么?那又与redirect_to @product有何不同?

感谢

威尔

1 个答案:

答案 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请求,并且在执行请求的操作后,它们会将用户重定向到用于显示信息的方法。