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

前端之家收集整理的这篇文章主要介绍了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"} }
原文链接:https://www.f2er.com/ruby/272867.html

猜你在找的Ruby相关文章