2

"javascript:#{mySmallJsSnippet}"href 値がであるリンクを含むページをレンダリングしようとしています。現在のページに のタグをmySmallJsSnippet追加する Javascript です。<script>src="http://e.g.com/static/myFullJsFile.js"

これについていくつか質問がありますが、主な質問は恥ずかしいほど簡単です。

ルートが与えられた場合、たとえばStaticR myFullJsFile_js、ルートの URL を文字列としてレンダリングして、に埋め込むことができるようにするにはどうすればよいmySmallJsSnippetですか? 基本的に、Yesod のテンプレート レンダリング機構がすべての に対して自動的に行うことを、ハンドラー コードで行う方法がわかりません@{fooBaR}

と に関係していると思われますが、正しく使用しrenderRouteていません。これまでの私の最善の推測は、 Foundation.hsからインポートし、それをの最初のパラメーターとして渡すことでした。joinPathjoinPathAppjoinPath

探し続けますが、これは Yesod の経験がある人にとっては簡単なことであると確信しているので、助けていただけると助かります。

4

1 に答える 1

7

getUrlRender次から使用できますYesod.Handler

getUrlRender :: GHandler sub master (Route master -> Text)

あなたの場合、次のようになります。

do render <- getUrlRender  
   let renderedUrl = render $ StaticR myFullJsFile_js

関数はタイプ セーフRouteを plainTextにレンダリングし、たとえばスクリプトに挿入できます。この方法では、 を使用することによって提供される正確性の保証が失われる@{ ... }ため、必要な場合にのみフォールバックする必要があります。

Yesod Bookにもこの機能の説明があります。

于 2013-03-30T15:34:47.630 に答える