問題タブ [yesod]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - スコープ内の変数へのHamlet自動アクセス
YesodBookから。
Hamletは、呼び出されると、スコープ内の変数に自動的にアクセスできます。に変数を具体的に渡す必要はありません。
この深い魔法は何ですか?どの変数がスコープ内にあるかを自動的に知るにはどうすればよいですか?
haskell - Yesodに永続型のToJSON/FromJSONのインスタンスがないのはなぜですか?
生成された型のToJSON/FromJSONインスタンスを作成するのはそれほど難しくありませんが、それでも、コードを生成している間にそれを投入できますか?または、Yesodユーザーとしてこれを実現する簡単な方法はありますか?(私はTHがどのように機能するかについてあまり深く掘り下げていません...)
更新: OK、私はこの提案が好きですが、私の永続的なタイプはユーザーだと言います。使用する場合
それは
どうやらそれはエイリアスだからです。だが
収量
私はおそらくまだ間違ったタイプを持っていますが、正しい呪文を取得するためにPersistentが生成するものについて十分に見つけることができません。
haskell - MultiPieceの使用方法
私はYesodに完全に慣れていません(そしてhaskellの経験はあまりありません)。そして、最初のハンドラーを構築しようとしています。デフォルトのパラメーターを使用してアプリをスクラフフォールドし(Yesod 0.9.4.1バージョンを使用しており、スクラフフォールディングでpostgresqlを選択しています)、selectListを使用してテーブルからデータを取得しようとしています。モデル構成ファイルで新しいテーブル(Fooと呼びましょう)を定義しました。
FooIdと他のいくつかのFoo属性のリストを渡したいので、ルートを定義しました。
/foos/#Int/#Int/*FooId FoosReturnR GET
およびハンドラー:
Application.hsにハンドラーをインポートし、それをcabalファイルに追加しました。これを実行しようとすると、FooIdはMultiPieceのインスタンスではないというエラーが表示されますが、インスタンスにしようとすると、 FooIdは型の同義語であり、MultiPieceのインスタンスにはできないというエラー-この問題を解決するにはどうすればよいですか?
編集:ダニエル:ええと、実際にはFooIdが正確に何であるかはわかりません-これは、これまで完全には理解していないYesodの魔法の一部です-テーブル定義から自動的に生成されます-しかし、それはある種の数値です。
MultiPieceの使用方法がわからないため、より単純なソリューションに切り替えて変更しました。
ルート:/foos/#Int/#Int/#String FoosReturnR GET
ハンドラー:[ログも追加]
コンパイル中ですが、http:// localhost:3000 /ectors / 1/1 / 1,2を参照すると、次のページのみが表示されます。内部サーバーエラーPrelude.read:解析なし
さて、私はここでFooIdが何であるかを完全には理解していません-数字を含む文字列のリストからFooIdのそのようなリストを作成する方法は?
そしてもちろん、FooIdをMultiPieceのインスタンスにする方法の解決策が最も望まれています。
編集:
ダニエルとsvachalek、あなたの投稿に感謝します-私はあなたの(ダニエルの)解決策を試しましたが、[FooId]が期待されているというエラーを受け取りました(ハンドラー関数宣言のように)が、FooIdタイプが与えられ、これは私を次の解決策に導きます:
もちろん、ルートを次のように変更しました。/foos/#Int/#Int/*FooIds FoosReturnR GET
およびハンドラー:
そして今、コンパイル中や実行時にエラーが発生することはありません。唯一の満足のいくものではないのは、結果が得られるはずのパラメーターを指定しても、結果として常にNotFoundを受け取ることです。どのSQLがデータベースに正確に送信されたかを判別する方法
編集:
これで、「見つかりません」が問題に関連していることがわかり、上記の編集は解決策ではありません-localhost:3000 / foos / 4930000/3360000を参照すると、結果が得られます(ただし、FooIdsは空です) -しかし、localhost:3000 /ectors / 4930000/3360000/1のようなものを追加すると、常に「見つかりません」と表示されます-したがって、まだ機能していません。
haskell - Yesodwai-eventsourceの例。パッケージの依存関係の問題?
このサンプルコードを自分のシステムでコンパイルできるようにしようとしています。でチャットモジュールをコンパイルしようとするとghc Chat.hs
、ghcは次のように表示します。
私はOSXSnow Leopardを使用していて、次のようなHaskellプラットフォームを除いて(すべて?)クリーンアップしています。
そして、ハッキングから新たにyesodとwai-eventsourceをインストールしました。
私が理解している限り、エラーは依存関係の問題に起因します。
yesod-0.9.4.1にはwai==0.4。*が必要であり、wai-eventsource-1.0.0にはwai>=1.0が必要です。
したがって、私の質問は次のようになります。この例(yesodの公式リリースを使用)を今すぐ機能させることは可能ですか?すべての変更で、yesodプロジェクトはatmを通過していますか?インストールしようとしているバージョンをより正確にする必要がありますか?もしそうなら、どのようにですか?
編集:
私は一掃し(または、念のため、ここ~/.ghc
で示したより厳密なアプローチを実際に実行しました)、単一のパッケージをインストールしようとしましたが、
結果は(不完全)になりました:cabal install yesod wai-eventsource
その前に(yesodとwai-eventsourceを別々にインストールして)ghc -hide-package wai-1.0.0 Chat.hs
結果として、
haskell - Network.HTTP.EnumeratorからNetwork.HTTP.Conduitへの移行
コードが壊れた理由がわかりません。parseURL
最初は、を与えるからだと思い[]
ましたrequestHeaders
。さて、多分私はそれにresquestHeadersがどうあるべきかを伝える必要があります。requestHeaders
さて、私は私の古い、動作しているコードから生成されたものを調べました。それも、を返します[]
。だから今、私はアイデアがありません。以下は、古い動作コードであり、GHCiで新しいコンジットベースのライブラリを使用して試したものに従います。
上記は正常に機能します。これが、移行中に実行しようとしたことと、表示されるエラーです。
ご覧のとおり、これはほぼ同じコードです。ですから、何が変わったのか、そして何をもっと詳しく見ていくべきかについてのフィードバックをお願いします。また、クライアントコードとサーバーの間で送受信されるhttpヘッダーを確認するにはどうすればよいですか?
haskell - http-enumerator といくつかの新しい yesod パッケージ間のパッケージの競合
この問題はこれに関連しています。このパッケージ バージョンの競合のため、http-enumerator から http-conduit に移行するように求められました。
移行には時間がかかる可能性があるため、解決策があることを期待してこの問題に戻ります。failure
これらの別々のバージョンを同じ cabal パッケージに入れる方法はありますか?
別の方法は、curl バインディングを使用した gulp です。パッケージが時々奇妙な動作をもたらすことがわかりました。
internet-explorer-8 - Internet Explorer 8+ との互換性
私のプロジェクトは、Yesod 0.10 からの現在の足場に基づいています。恐ろしい領域に入ってしまいました。私のコードは Firefox と Chrome の両方で問題なく動作しますが、職場では IE でも動作する必要があります。そうではありません。「Webページを表示できません」というエラーが表示されるだけです。デフォルトのレイアウトを使用していますが、それでも問題が発生します。以下は、Yesod が生成するソースです。
haskell - ホスト名に依存しない Yesod アプリケーション
これは非常に単純な質問です。同時に複数のホストを処理できる Yesod アプリケーションを実行するにはどうすればよいですか?
デフォルトの Yesod セットアップは、任意のホストからの着信接続を処理できますが、すべての URL はapproot
先頭に追加してレンダリングされます。joinPath
現在のドメインを保存してその関数で使用できるようにする方法があれば、Yesod インスタンス宣言でオーバーライドすることは可能ですが、ありません。
この wiki ページで説明されている方法は機能しますが、ルートに追加のパラメーターを強制するため、非常にハックですdomain
(照合するドメインの静的セットがないため)。実用的な目的のために (私は多くのルートを持っており、そのうちのいくつかはドメインに依存していないため)、ルートをそのままにしておくソリューションを用意することをお勧めします。ハンドラー関数。
私は絶対 URL を必要とするもの (電子メール、RSS、XML API など) を使用してapproot _ = ""
いるため、オプションではありません。
コンパイル時に、サポートする必要があるすべてのホスト名を知ることはできません。
approot
では、変数ではなく受信リクエストのホスト名を使用するように URL をレンダリングするにはどうすればよいでしょうか?
forms - フォームでの複数入力の選択肢
ユーザーが既存の値のリストから選択するか、新しい (テキスト) 値を作成できるフォームがあります。
それをコーディングする最もエレガントな方法は何ですか?
私の最善の(そしてIMOはそれほどエレガントではない)方法は、次のように定義することでした:
フォームを受け取ったら、結果を次のように渡します。
そして、ハンドラーにフォームを再送信するか、結果に従って続行するかを決定させます。
より良い/短い提案はありますか? 私の実際のフォームには、そのような選択/作成フィールドが 2 つあり、データ構造と処理がさらに面倒になります。ありがとう、
haskell - ラジオ ボタン ラベル内に HTML を挿入するにはどうすればよいですか (Yesod で)
radiofieldList のラベルとして html をレンダリングしようとすると、次のエラーが発生しました。
したがって、以下のコードを考えると、インスタンスを作成するのは理にかなっていますか?(RenderMessage Scheduler (Handler RepHtml))
(HTML,a)
思いついたのですが、本当の答えは、必要な要求ではなく、受け入れるカスタム フィールドを作成することです(msg,a)
radioFieldList
。インスタンスを作成するだけでうまくいくことを願っていますRenderMessage
。