【发布时间】:2011-03-23 06:42:24
【问题描述】:
我正在尝试一个 json 响应,其中某些值是由部分呈现的 html
#projects_Controller.rb
def index
respond_to do |f|
f.json
end
end
# index.json.erb
{
"html":"<%= raw escape_javascript(render :partial => 'projects/disclaimer') %>"
}
但我收到以下错误:
ActionView::Template::Error (Missing partial projects/disclaimer with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>
[:json], :locale=>[:en, :en]} in view paths "c:/rails/app/views", "c:/rails/vendor/plugins/more/app/views", "C:/Ruby192/lib/ruby/gems/1.9.1/gems/devise-1.1.8/app/views")
似乎 JSON 请求在其名称中呈现部分带有 .json.erb 但不是 .html.erb,这就是我所拥有的。 有没有办法让我指定'html'。
添加: 如果请求是“js”,并且在 index.js.erb 我呈现几乎相同的代码: # index.js.erb
disclaimer = {
"html":"<%= raw escape_javascript(render :partial => 'projects/disclaimer') %>"
}
它确实找到了 projects/disclaimer.html.erb 并正确呈现它。我想知道为什么会有这样的不一致,如果一个人请求js,其模板中的任何部分渲染都会寻找partial_name.html.erb,但如果一个人请求json,部分渲染会请求partial_name.json.erb?
谢谢
【问题讨论】:
标签: ruby-on-rails json partial-views