Rails中的ActionView :: MissingTemplate何时发生?

时间:2016-02-26 03:40:18

标签: ruby-on-rails ruby-on-rails-3 api ruby-on-rails-4

Rails中通常会发生ActionView::MissingTemplate什么时候?我有一个API,它可能无法返回错误,但是当移动触发了路由时。它发生两次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中的某些内容以使此错误发生?怎么样?

谢谢!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

例如,

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

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

包含%ff%dd的参数的任何情况。与d%dd一样。