Rails寻找JSON请求的模板

时间:2013-11-15 17:23:02

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

routes.rb我有:

resources :workouts

在我的训练控制器中,我有:

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

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

  

缺少模板

     

缺少模板锻炼/显示,应用/显示{{locale => [:en],:formats => [:json],:handlers => [:erb,:builder,:coffee]} 。搜索:*“/ home / rails / app / views”

这似乎表明格式应该是它应该是什么,但它仍在搜索视图。这个相同的代码在其他控制器中运行,具有相同的设置就好了。另外,对于html视图,转到/ workouts / 1似乎工作得很好,但是当format.html被移除时它也会正确呈现html视图。

2 个答案:

答案 0 :(得分:18)

查看render

的源代码
      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

因此值保持为字符串,render将继续搜索模板。

要修复,请提供有效的哈希,即使是出于尝试目的。

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

答案 1 :(得分:-1)

您可以尝试使用/workouts.json