在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视图。
答案 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