【问题标题】:Rails - How does the show and new action workRails - 节目和新动作如何运作
【发布时间】:2014-12-31 20:42:28
【问题描述】:

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

所以,我很好奇这实际上是如何发生的。其他操作有 redirect_to :some_path 这是有道理的,但是当操作为空时,“render action 'show', location: @product”究竟如何调出项目显示页面?另外这与 redirect_to @product 有什么不同?

谢谢

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    Render 生成一个字符串,该字符串将显示为对应用程序请求的响应。

    redirect_to 生成一个响应标头,从而导致对应用程序的新请求。

    render action 'show', location: @product 使用文件app/views/products/show.html.erb@product 作为参数来生成将返回的html。

    某些控制器函数为空的原因是 rails 使用的是默认值。因此,如果您不告诉 rails 要渲染什么,那么 rails 会在适当的位置查找文件。

    redirect_to 结尾的方法通常是在您的数据库中保存某些内容的发布/修补请求,并在执行请求的操作后将用户重定向到用于显示信息的方法。

    【讨论】:

    • 啊,我明白了。最后一件事。我知道respond_to 做|格式|决定请求所要求的格式,我理解类似“format.html { redirect_to @product, notice: 'Product was successfully updated.' }" 但是 ""format.json { head :no_content }" 你不希望这两个选项做同样的事情吗?
    • 不一定。通常 json 请求(根据我的经验)是通过 ajax 从 javascript 发出的。这样的前端通常非常聪明,可以自己决定要做什么。我可能会发送“一切正常”。如果你强迫他们做同样的事情,你的表演动作也必须能够处理 json 请求。
    猜你喜欢
    • 2017-09-02
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多