ruby-on-rails - 未找到 Rails4 Jbuilder 模板

标签 ruby-on-rails jbuilder

我正在尝试使用 Jbuilder 设置一个简单的 JSON 响应。我的 Controller 如下:

class Api::V1::JobsController < Api::V1::BaseController
   def show
      @job = Job.find(params[:id])
   end
end

我这里有一个 jbuilder 模板:

views\api\v1\jobs\show.json.jbuilder

由于某种原因,在浏览器或 Postman 中加载页面时, Controller 被命中,但未找到 jbuilder 模板。我得到一个:

渲染文本模板(0.5ms) 298ms 内完成 404 Not Found

如果我修改作业 Controller 上的显示操作并添加 render json: @job 我会得到所需的输出,但当然它没有使用 jbuilder 模板。

无法弄清楚为什么看不到 jbuilder 模板!

如果我转到 .json url,则添加一些附加详细信息

Started GET "/api/v1/jobs/69407.json" for 127.0.0.1 at 2016-01-21 19:16:44 -0500
Processing by Api::V1::JobsController#show as JSON
  Parameters: {"id"=>"69407"}
  Job Load (18.3ms)  SELECT  "jobs".* FROM "jobs" WHERE "jobs"."id" = $1 LIMIT 1  [["id", 69407]]
  Rendered text template (0.5ms)
Completed 404 Not Found in 86ms (Views: 1.1ms | ActiveRecord: 56.4ms)

更新 - 我发现如果我专门引用它加载的 jbuilder 模板:

渲染“show”,格式:[:json],处理程序:[:jbuilder],状态:200

另外 - 为了使上述工作正常,我必须将 jbuilder gem 添加到我的 gem 文件中 - 这很奇怪,因为我在 Rails 4 上,默认情况下应该包含它?

最佳答案

扩展@OlalekanSogunle 的答案。您可以通过几种不同的方式设置您希望操作如何响应。

在路由中 (这将默认实际路由以将 header 请求设置为 json 格式):

Rails.application.routes.draw do

    namespace :api do
        namespace :v1 do
            get 'jobs/show', to: 'jobs#show', defaults: { format: :json }, as: :job
        end
    end

end

在 Controller 中作为类默认值:

class Api::V1::JobsController < Api::V1::BaseController

   respond_to :json

   def show
      @job = Job.find(params[:id])
   end

end

在 Controller 中作为默认操作:

class Api::V1::JobsController < Api::V1::BaseController

   def show
      @job = Job.find(params[:id])

      respond_to do |format|
         format.json
      end
   end

end

关于ruby-on-rails - 未找到 Rails4 Jbuilder 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34914463/

相关文章:

ruby-on-rails - Carrierwave - 将图像调整为固定宽度

ruby-on-rails - 类 RegistrationController 的父类(super class)不匹配 - 覆盖设计 Controller

ruby-on-rails - 我如何使用 JBuilder 和 Rails 创建这个 JSON 结构?

ruby-on-rails - 我如何期待一条消息,其参数是 RSpec 中类的任何实例?

ruby-on-rails - Omniauth 登录而不刷新页面?

ruby-on-rails - rails : going from sqlite -> postgres

ruby-on-rails - Jbuilder Partials Merge 而不是 Nest

ruby-on-rails - 如何组合不同的 json jbuilder View ?

ruby-on-rails - 如何在JBuilder中使用RSpec?

javascript - 使用jbuilder访问子对象有很多关系