如何在控制器代码从 API 获取数据时向用户显示 "Fetching data" 文本?

How to display "Fetching data" text to user while controller code is fetching data from API?

我的控制器有一个如下所示的操作方法:

class PlansController < ApplicationController
  def new
    @plan = Plan.new

    # This API takes a long time, around 6 seconds
    @plan_data = API.get_relevant_data(current_user)

    respond_to :html
  end
end

当用户点击'Create plan'按钮时,它会到达这个new动作,当它到达API.get_relevant_data时,需要6秒才能完成,我想显示'Fetching data' 发生这种情况时向用户发送。

如何在用户在浏览器中看到的 HTML 页面中显示它?

我建议在这里使用 ajax

与其使用直接 http 请求 new 操作,不如发送一个 ajax。只要新操作不响应数据,您就可以在此处显示加载屏幕。