2012-04-16 6 views
1

RubyのhamlテンプレートでHTML5 localStorageを使用しようとしていますが、localStorage.getItem( 'myItem')の値を取得してJavaアプレットに渡す必要があります):JS変数をhamlテンプレートに挿入する

- content_box("MyBox") do 
    %object{:classid => "clsid:xxx"} 
    %param{:name => "myItem", :value => "javascript:localStorage.getItem('myItem')"} 
    %comment 
     %EMBED{:myItem => "javascript:localStorage.getItem('myItem')"} 
     %noembed 

これを行うには良い方法がありますか?私は次のようなことをすることができます:

:javascript 
    document.write("<param name='myItem' value="+localStorage.getItem('myItem')+">" 

しかしそれはとても醜いです!

これは私が埋め込んでいるオブジェクトであり、document_readyより前に存在する必要があることに注意してください。オブジェクトを選択してdocument_ready上に値を追加することはできません。私が考えることができる唯一の他の方法は、Ruby変数を事前に値にするためにajaxの提出を行うことですが、それは本当に不必要です。

ありがとうございます!

答えて

2

場合によっては動作が醜い場合があります。

あなたのデータがクライアントに保存されている場合、データを取得して別の形式でクライアントに返すだけのサーバーリクエスト/ページ/アクションを作成するのは、あまりに面倒です。

<param>タグを追加するには、javascriptを使用してください。

1

オブジェクトがJavaScriptに依存している場合は、パラメータ全体でなく、JavaScriptで要素全体を書き込むこともできます。それで、文書の準備ができたらそれを行うことができます。

+0

良い点、ありがとう。 – ZachB

関連する問題