Rails 中的 ActionView::MissingTemplate 什么时候发生?

When does ActionView::MissingTemplate in Rails happen?

ActionView::MissingTemplate通常在什么时候发生在Rails?我有一个 API 不可能 return 以上的错误,但是当移动设备触发路由时。它发生两次 ActionView::MissingTemplate 错误。

这是我 API 控制器中的示例代码:

def search
  @search_text = params[:search_text]
  unless @search_text.blank?
    @my_models = MyModel.find_all_by_age(@search_text)
  else
    @my_models = []
  end

  render 'api/v4/my_models/show', status: 200, formats: :json
end

在我的路线上:

namespace :api, defaults: {format: 'json'} do
  namespace :v4 do
    resource :my_models, only: [:search] do
        get :search
      end
  end
end

我很困惑ActionView::MissingTemplate什么时候发生?有人可以指点我什么时候发生这个错误吗?此手机是否遗漏了 URL 中的某些内容以导致此错误发生?怎么样?

谢谢!

ActionView 将在当前控制器视图文件夹中查找 templates/partials。但是,如果您更改了控制器中的视图路径,那么您将能够为其添加和附加不同的视图路径。

在您的搜索方法中,您有 render 'api/v4/my_models/show',确保您在列出的工作目录中有正确的模板。

当您在 url 参数中包含 %dd%ff 时,可能会出现 ActionView::MissingTemplate 错误。因为下面是 ASCII Encodings 中的特殊字符。 %dd 用于特殊字符 Ý

例如,

localhost:3000/api/users?search=%dd

localhost:3000/api/users?search=%ff

包含 %ff%dd 的参数的任何大小写。喜欢 d%dd.