【发布时间】:2017-06-25 21:44:51
【问题描述】:
我在 Rails 4.2 上使用 JBuilder(版本 ~>2.0)渲染 JSON 部分时遇到问题。尽管文件存在,但它给了我 ActionView 缺少部分错误,它似乎忽略了我提供的路径并搜索默认的魔法路径。我意识到将部分放在魔术路径上会修复它,但出于多种原因,最好将部分保留在原处并正确找到它。从我的 /views 目录结构的其他地方(特别是来自/views/api/task_templates/_task_template.json.jbuilder)正确找到了部分。
主 JBuilder 文件,它本身就是一个部分 (_task_template.json.jbuilder):
json.task_files task_template.task_files.each do |file|
json.partial! file, partial: 'api/task_files/task_file', as: :task_file
end
部分文件(_task_file.json.jbuilder):
json.(task_file, :id, :file_type, :name, :original_path, :image_path, :icon, :organization_id, :viewer)
错误信息:
ActionView::Template::Error:
Missing partial api/v1/task_files/_task_file with {:locale=>[:en], :formats=>[:json], :variants=>[], :handlers=>[:jbuilder]}. Searched in:
* "/Users/lucy/trail-app/app/views"
* "/Users/lucy/.rvm/gems/ruby-2.1.3@trail-app/gems/sidekiq_monitor-0.1.7/app/views"
* "/Users/lucy/.rvm/gems/ruby-2.1.3@trail-app/gems/devise_invitable-1.7.0/app/views"
* "/Users/lucy/.rvm/gems/ruby-2.1.3@trail-app/gems/devise-4.2.0/app/views"
这是我的目录结构:
/views > /api > /task_files > _task_file.json.jbuilder (THE MISSING PARTIAL)
> /v1 > /task_templates > _task_template.json.jbuilder (THE MAIN FILE)
【问题讨论】:
-
你可以试试 ./v1/task_files/_task_file 吗?
-
尝试提供它作为部分路径?该路径没有文件,唯一的 task_file 部分位于
/views/api/task_files/_task_file.json.jbuilder -
是的,作为部分路径。请尝试 ./task_files/_task_file 或只是 task_files/_task_file。
-
感谢您的建议,但我已经尝试过,但都不起作用,同样的错误被抛出。
-
将
/task_files文件夹移动到/v1文件夹中