ページ上の大きな醜い目に見えないフォームで状態を管理していました。クリック イベントでフォームの値をシリアル化し、ページ上の div のコンテンツを提供する ajax 送信を行います。大きなフォームから値をシリアライズおよびデシリアライズし、jQuery BBQ プラグイン (完全には理解できませんでした) を使用して状態を管理していました。
アプリケーションで jQuery BBQ をやり直して history.js を使用しようとしています。ajaxify-html5
要点をアプリケーションにプラグインしました。
私のアプリケーションはデータベース テーブルにドリルダウンし、そのテーブルの列をページ上のリンクとしてリストします。それらにはクラス「.attrs」が割り当てられています。
で呼び出されている「クリック」イベントが表示されajaxify
ます。History.pushState を呼び出しているように見えますが、これは bbq.pushState に似ていると思います。
URL は同じままですが、Rails アプリケーションで期待どおりにリクエストが実行されていないようです。私が取り組んでいる URL の例は次のとおりです。
http://myapp/brands/get_attributes?brand_id=539page_attribute=attribute1&attribute1=Whirlpool
BBQ プラグインを使用したとき、次のように $.ajax() 呼び出しに送信したハッシュを指定しました。
hash = type: "POST", url: "brands/get_attributes", data: $("#buyersguideform").serialize()
それは Ajax リクエストを実行していたので、Rails はそれを認識し、適切な .js.erb テンプレートで応答します。
残念ながら、私の URL には、History.js にどのような種類のリクエストを行うかを伝えるのに十分な情報が含まれていないようです。そのため、コードは通常の古い GET リクエストをget_attributes
実行しており、コントローラーで正しいアクションを取得していません。
この History.js でこれらの問題を解決する必要があります。
1) 私が構築したクレイジーな自家栽培の状態管理の目に見えないフォームからどのように脱却するかを考え出す。私が生成しているパラメーター化された URL でそれを始めました。あるAjaxリクエストから次のリクエストまで、それを行う方法がわかりません。言い換えれば、いつ/どのように使用するべきかわかりませんgetState()
。
2) History.js で非 Ajax GET の代わりに Ajax POST を実行する方法を見つけてください。
3)この要点をさらに理解する。手順には、スクリプトをプラグインするだけでよいと書かれていますが、明らかに、宣言セクションで言及されているいくつかのクラスがあり、何らかの方法でアプリケーションに組み込む必要があります。
私は状態管理に慣れていないため、少し圧倒されています。私はこれを8時間続けており、ある程度の進歩を遂げていますが、非常に遅いです. どんな助けでも非常に深く感謝しています。
更新 1:
呼び出しに提供されたハッシュでキーをGET
指定していないため、gist は s のみを実行することがわかります。そこにハードコーディングすると、もちろん. さらに見直してみると、要点を使用する必要があるようには見えません。type
$.ajax()
POST
また、どういうわけかHistory.pushState()
私のためにAjaxリクエストを行うのは間違っていたようです。エントリを状態にプッシュするだけのようです。これは完全に適切です。私が混乱した理由は、このアプリには以前に、状態管理とその後の Ajax リクエストの両方を処理する pushState ラッパーが採用されていたためです。したがって、Gist を使用しないと Ajax の投稿が行われないのは、そもそもそれが想定されていないからです。