【发布时间】:2015-01-29 17:05:47
【问题描述】:
我正在尝试使用 jbuilder 模板。
给定控制器,
class Api::ReviewsController < ApplicationController
before_filter :authenticate_user!
respond_to :json
def create
@review_request = ReviewRequest.new(review_request_params.merge(user_id: current_user.id))
if @review_request.save
render 'review_requests/review'
else
head :forbidden
end
end
end
我将 jbuilder 模板存储在 app/views/review_requests/review.json.jbuilder
json.review_request do
json.(@review_request, :title,)
end
我收到一个模板注释发现错误。
ActionView::MissingTemplate (Missing template review_requests/review with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in:
* "/Users/jd/Dropbox/application-code/antipattern/app/views"
* "/Users/jd/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/devise-3.4.1/app/views"
* "/Users/jd/Dropbox/application-code/antipattern"
* "/"
):
app/controllers/api/reviews_controller.rb:8:in `create'
对于存储此模板的正确位置或为什么 rails 没有找到我正在使用的模板(如果存储位置恰好没问题)有什么想法吗?
【问题讨论】:
-
您需要使用
respond_to来响应json请求。 -
@bronislav 你注意到
respond_to已经写在控制器中了吗?除非我遗漏了什么,否则我认为情况并非如此? -
@bronislav 所以实际上,我的错误是我没有向服务器发出
.json请求,这是我的一个错误,但你的陈述让我考虑了一下,非常感谢。跨度>
标签: ruby-on-rails