【问题标题】:Rails: Render a status code without rendering a templateRails:渲染状态代码而不渲染模板
【发布时间】:2017-11-03 10:37:09
【问题描述】:

我正在尝试对 rails (5.1.3) 应用程序进行 ajax 调用。我希望控制器中的目标操作呈现状态代码 200 并且不执行任何其他操作。下面是动作的样子。

  def some_delete_action
    respond_to do |format|
      format.js do
        render status: 200, layout: false
      end
    end
  end

问题在于 rails 尝试加载与该操作关联的模板。由于我的应用中没有这样的模板,因此我收到了 ActionView::MissingTemplate 错误。

如何在没有 rails 尝试访问模板的情况下呈现状态代码?

【问题讨论】:

    标签: ruby-on-rails ruby ajax ruby-on-rails-5


    【解决方案1】:

    您可以使用ActionController::Head 并将:ok 作为值传递:

    # home_controller.rb
    def do_nothing
      head :ok
    end
    
    # routes
    get 'home/do_nothing
    
    # request in view
    <script type="text/javascript">
      $.get('<%= home_do_nothing_path %>')
    </script>
    

    【讨论】: