2017-08-18 11 views
1

私はSinatraアプリケーションからERBテンプレートを使用してアクセスする必要のある標準jQuery-MobileマルチページHTMLファイルを用意しています。ファイル内のブックマークやアンカーにアクセスする方法がわかりません。私が取得することで、Ruby Sinatra erbテンプレートを使用してjQuery Mobile(jqm)のマルチページHTMLにアクセス

get '/login' do 
    erb :'admin.html#login_page' 
end 

:しかし

No such file or directory @ rb_sysopen - .../views/admin.html#login_page.erb: 

私がアクセスしようとしているファイルがある

admin.html.erb

私のコードは単純です。

login_pageのブックマークがあります。

私がアクセスしようとしているHTMLテンプレートの部分は次のとおりですが、他のページも含まれています。

<div data-theme="b" data-role="page" id="login_page"> 
    <%= partial :'main-header.html', locals: {page: 'Management Console Login'} %> 
    <div class="ui-content"> 
    <a href="#login" data-rel="popup" class="ui-btn ui-btn-inline ui-corner-all ui-icon-check ui-btn-icon-left">Admin 
     Login</a> 
    <div data-role="popup" data-history="false" id="login" class="ui-content" style="min-width:250px;"> 
     <form action='/login_process' method='post' data-ajax='false'> 
     <div data-role="controlgroup"> 
      <h3>Administrative Login</h3> 
      <label for="logon" class="ui-hidden-accessible">Logon:</label> 
      <input type="text" name="user" id="logon" placeholder="Logon"> 
      <label for="password" class="ui-hidden-accessible">Password:</label> 
      <input type="password" name="password" id="password" placeholder="Password"> 
      <input type="submit" id="loginButton" data-transition="flip" value="Login"> 
     </div> 
     </form> 
    </div> 
    </div> 
    <%= partial :'frontend/footer.html' %> 
    <script type='application/javascript' src='assets/login_modal.js'></script> 
</div> 

私は単純にレンダリングしますが、Rubyトランスレータが必要です。どのようにしてこの仕事をするのか、それとももっと良いやり方をするのか?ありがとうございました...

+0

テンプレートの外観は何ですか?レイアウトファイルを使用していますかスタンドアロンテンプレートですか? –

+0

@maxpleanerテンプレートを追加しました。しかし問題は、bookmakr/anchorを参照する機能を提供する形式でerb templateコマンドを使用する方法です。ありがとう。 –

+0

このメソッドを実行時にhttps://github.com/sinatra/sinatra/blob/master/lib/sinatra/base.rb#L784-L799に変更しないと、おそらく不可能です。 – aristotll

答えて

0

基本的にひねりで作業しましたが、まだ他のコードに問題があったので、私はそれを使用していません。私はアンカーをローカル変数に変換し、そのアンカーに行くためにHTML JavaScriptを参照しました。シナトラで

:ページで

erb :'admin.html', :locals => {:anchor => "#login_page"} 

let body = $("body"); 
let anchor = <%= "\'#{anchor}\'" %>; 
body.on("pagecontainerbeforeshow", function (event, ui) { 
    body.pagecontainer("change", anchor); 
}); 

これは働いていました。私が持っていた問題は、私が働くことができなかったbeforeshowに基づいて、1ページに動的な変更を加えなければならないということでした。

しかし、私は質問を解決しました。

関連する問題