Загрузка stl файлов в three.js в приложение ruby on rails
Я сталкиваюсь с интересной проблемой, когда пытаюсь использовать three.js внутри проекта ruby on rails. Проблема возникает именно тогда, когда я пытаюсь загрузить внешние файлы STL для просмотра. Я установил его там, где люди загружают дизайны, а в дизайне есть идентификатор, имя файла и файл stl. Затем я хочу, чтобы three.js извлек URL-адрес файла и отобразил его. Всякий раз, когда я пытаюсь запустить его внутри моего проекта RoR, я получаю эту ошибку:
Запустил GET "/designs/slotted_disk" для 127.0.0.1 в 2014-06-12 20:11:30 -0700 Обработка в DesignsController # show as /
Параметры: {"id"=>"slotted_disk"}
Пользовательская нагрузка (0,2 мс) ВЫБЕРИТЕ "users".* FROM "users" WHERE "users"."Remember_token" = '...' LIMIT 1
Расчетная нагрузка (0,1 мс) ВЫБЕРИТЕ "Конструкции". * ИЗ "Проектирует" ГДЕ "Проектирует". "Id" =? ORDER BY create_at DESC LIMIT 1 [["id", "slotted_disk"]]
Завершено 404 Не найдено в 3 мс
ActiveRecord::RecordNotFound (Не удалось найти дизайн с id=slotted_disk): app/controllers/designs_controller.rb:19: в `show'
Из того, что я могу собрать, я сталкиваюсь с какой-то проблемой, когда ruby on rails думает, что я пытаюсь передать новый дизайн и установить id в качестве имени файла проекта. Я не могу найти что-либо в Интернете, что покрывает это, любая помощь будет очень признателен!
Код контроллера RoR (designs_controller.rb)
def show
@design = Design.find(params[:id])
end
Код представлений RoR (show.html.erb)
<% provide(:title, @design.name) %>
<div class="row">
<aside class="span4">
<section>
<h1>
<%= @design.name %>
</h1>
<div id="viewer"></div>
<%= javascript_include_tag "three.min" %>
<%= javascript_include_tag "STLLoader" %>
<%= javascript_include_tag "TypedGeometry" %>
<%= javascript_include_tag "Detector" %>
<%= javascript_include_tag "stats.min" %>
<%= javascript_include_tag "render_file" %>
</section>
</aside>
</div>
код three.js (render_file.js)
var loader = new THREE.STLLoader();
loader.addEventListener( 'load', function ( event ) {
var geometry = event.content;
var mesh = new THREE.Mesh( geometry, material );
mesh.position.set( 0.136, - 0.37, - 0.6 );
mesh.rotation.set( - Math.PI / 2, 0.3, 0 );
mesh.scale.set( 2, 2, 2 );
mesh.castShadow = true;
mesh.receiveShadow = true;
scene.add( mesh );
} );
loader.load( 'slotted_disk.stl' );