2

我遇到了一个有趣的问题,我试图在 ruby​​ on rails 项目中使用three.js。当我尝试加载要查看的外部 stl 文件时,就会出现此问题。我已经将它设置在人们上传设计的地方,并且在设计中有一个 id、文件名和 stl 文件。然后我想让 three.js 检索文件的 url 并显示它。每当我尝试在我的 RoR 项目中运行它时,我都会收到此错误:

在 2014-06-12 20:11:30 -0700 开始 GET "/designs/slotted_disk" for 127.0.0.1 由 DesignsController#show as /

参数:{"id"=>"slotted_disk"}

用户负载 (0.2ms) SELECT "users".* FROM "users" WHERE "users"."remember_token" = '...' LIMIT 1

设计负载 (0.1ms) SELECT "designs".* FROM "designs" WHERE "designs"."id" = ? ORDER BY created_at DESC LIMIT 1 [["id", "slotted_disk"]]

3ms 内完成 404 Not Found

ActiveRecord::RecordNotFound(找不到 id=slotted_disk 的设计):app/controllers/designs_controller.rb:19:in `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>

三.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' );
4

0 回答 0