3

私は Yesod scaffolded サイト (yesod 1.1.9.2) を使用しており、昨日数時間かけて、Yesod での Fay の基本的な使い方について頭を悩ませました。これで、Fay を使用して AJAX 機能のチャンクをページに追加するための意図したワークフローを理解できたと思います (他の誰かがステップバイステップが役立つと思うかもしれないという理由だけで、ここでは少し衒学的になります)。

  • Example aにデータ コンストラクターを追加しますSharedTypes.Command
  • の式case readFromFay Command of ...Handler.Fay.onCommand、新しいデータ コンストラクターに一致するケースを追加します。
  • fay/Home.hs をパターンにした Fay ファイル 'Example.hs' を /fay に作成します。ここのどこかで、式を使用しますcall (Example "foo") $ myFayCallback
  • 生成している Javascript を使用するページのルートとハンドラーを定義します。ハンドラーで、 を使用します$(fayFile' (ConE 'ScriptR) "Example.hs")

私の質問:現在の Yesod/Fay アーキテクチャでは、Persistent モデル タイプを Fay コードと共有するにはどうすればよいですか?

Fay ファイルでの使用import Modelが機能しません -- この Fay ファイルを使用しているページを読み込もうとすると、ブラウザーにエラーが表示されます (エラーを警告する Fay の標準的な方法だと思います)。モジュール「モデル」を見つけますが、次のディレクトリのみを検索しました。

  • projectroot/cabal-dev//share/fay-0.14.2.0/src
  • projectroot/cabal-dev/share/fay-base-0.14.2.0/src
  • projectroot/cabal-dev/share/fay-base-0.14.2.0
  • プロジェクトルート/フェイ
  • projectroot/fay-shared

また、SharedTypes.hs でモデルをインポートおよび再エクスポートしようとしましたが、同じエラーが発生しました。

これを行う方法はありますか?そうでない場合、なぜですか?(私は Haskell と Yesod の両方に比較的慣れていないので、「なぜ?」という質問への回答は非常に役に立ちます。)

編集:

この質問のタイトルで Persistent に言及すると誤解を招く可能性があることに気付きました。私がやろうとしていることをより明確にするために: 私のモデルのために Yesod が定義するのと同じデータ型を使用して、Fay コードでデータを表現できるようにしたいだけです。たとえば、このように config/models でモデルを定義すると...

Foo
    bar BarId
    textThatCanBeNull Text Maybe
    deriving Show

... タイプの値を受け取ったり返したりする AJAX 'コマンド' を定義しFoo、Fay コードをFoos で処理できるようにしたいと考えています。私の Fay コードから Persistent のクエリ機能を直接使用することはできないことを理解しています。私は Model.hs と config/models のすべてを Persistent と頭の中で関連付けているので、タイトルで Persistent についてのみ言及しました。

4

1 に答える 1