1

sinatraで page.jsを使用できるかどうかを知りたいです。Myimagesのルートは Page.js ではなく Sinatra によってインターセプトされます

get '/' do
  erb :index
end

__END__

@@ layout
 <!DOCTYPE html>
 <html lang="en">
 <head>
   <title>page.js</title>
   <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet">
   <script type="text/javascript" src="page.js"></script>
   <style type="text/css">ul li { display: inline; list-style:none }</style>
 </head>
 <body>
   <%= yield %>
</body>
<script type="text/javascript">
page('/images', function(ctx){
      console.log('page(' + ctx.path + ')');
          $('section#example').html('<h2 class="text-center">Listing of Images</h2>');
});
/*... /videos ..*/
page('*', function(ctx){
      console.log('page(' + ctx.path + ')');
          $('section#example').html('<h2 class="text-center">Error : ' + ctx.path + '</h2>');
});

$('document').ready(function(){page()});

</script>
</html>

@@ index
    <ul>
      <li><a href="./">index</a></li>
      <li><a href="./videos">videos</a></li>
      <li><a href="./images">images</a></li>
    </ul>
   <section id="example" class="well"></section>
   <h1>hello world</h1>
4

1 に答える 1

1

page.js問題はローカルファイルの場所だけだと思います。Sinatra は、呼び出されたディレクトリで静的アセットを見つけることを期待していますpublic(それ以外の場合、パスは定義済みのルートであると見なされます)。したがって、ディレクトリを作成してpage.jsそこにファイルを移動するだけです (ただし、スクリプト src はそのままにしておきます)。Sinatra が静的アセットを提供するディレクトリを変更したい場合は、次のように実行できます。

set :public_folder, Proc.new { File.join(root, "my_directory_with_assets") }

あなたも行方不明だと思うjQueryので、CDNから追加してください。

<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
于 2015-01-13T12:51:58.617 に答える