ruby-on-rails – Rails寻找JSON请求的模板

在我的路线.我有:
resources :workouts

在我的训练控制器我有:

def show
  respond_to do |format|
    format.html
    format.json { render :json => "Success" }
  end
end

但是当我去/workouts/1.json时,我收到以下内容:

Template is missing

Missing template workouts/show,application/show with {:locale=>[:en],:formats=>[:json],:handlers=>[:erb,:builder,:coffee]}. Searched in: * “/home/rails/app/views”

这似乎表明格式是应该的,但它仍在搜索视图.相同的代码在其他控制器中功能相同的设置正常.另外,对于html视图来说,去/ workouts / 1似乎工作得很好,虽然当格式化的格式被删除时,它也正确地渲染了html视图.

解决方法

看看渲染的源代码
elsif options.include?(:json)
        json = options[:json]
        json = ActiveSupport::JSON.encode(json) unless json.is_a?(String)
        json = "#{options[:callback]}(#{json})" unless options[:callback].blank?
        response.content_type ||= Mime::JSON
        render_for_text(json,options[:status])

注意第三行.如果值为:json是一个字符串,那么render将不会自动为该值调用to_json.

所以值将保持为字符串,渲染将继续搜索模板.

要修复,提供一个有效的哈希甚至为了尝试的目的.

format.json { render :json => {:message => "Success"} }

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...