6

ブラウザーからスナップのハンドラー関数にリストパラメーターを渡すことは可能ですか? リストから複数のパラメーター URL を作成し、それをハンドラー関数に送信するにはどうすればよいですか?

たとえば、いくつかのテーブル行またはその他のオブジェクトを削除する必要があります。通常のRESTルートではできません:

("/objects/:id", method DELETE deleteObject)

単純に、数が多すぎて 100 行を 1 つずつ削除するのは少し面倒だからです。

[3,4,6,8] 行を削除する必要があるとします。では、そのリストを URL 内のハンドラーに渡すにはどうすればよいでしょうか? アクションのルートはどのようになりますか?

アップデート

まあ、私は最終的にjqueryとajax呼び出しでそれをやった. Snap の「getParams」関数は複数のパラメーター URL を処理できますが、jquery と ajax を使用せずに実際に URL を構築する方法をまだ理解できません。

JavaScript を使用して、削除するアイテムを収集し、アイテムの配列を作成しました。次に、ajax を使用して複数のパラメーター URL を作成し、それをハンドラーに送信しました。この方法と Snap に関する注意事項:

-- Snaps の「getParams」関数は、古いスタイルの複数パラメーター URL のみをサポートします。

"a=1&a=2&a=3&a=4"

新しいものではありません:

"a[]=1&a[]=2&a[]=3&a[]=4"

これにより、複雑なパラメーターを渡すことができなくなります。

-- ルートは次のようになります。

("/objects/", method DELETE deleteObject)

ではなく:

("/objects/:ids", method DELETE deleteObject)

スナップで複数のパラメーター URL を渡す唯一の方法だとは思わないため、質問には答えませんでした。

「getParams」はそれを処理できますが、私の質問はまだ残っています: URL を構築してハンドラーに送信するにはどうすればよいですか?

たとえば、Rails はビュー ロジック内で "link_to" 関数を使用して URL を構築します。Snap はテンプレート内でロジックを使用しないので、どのように機能しますか? スナップで複数のパラメーター URL を渡す唯一の方法が JavaScript の助けを借りているということはあり得ません...?

誰かが私のためにこれを確認してください?

4

1 に答える 1

4

あなたはほとんどそこにいます。次のフォーム...

<form action="/foo">
  <ul>
    <li>Row 1: <input type="checkbox" name="a" value="1"/></li>
    <li>Row 2: <input type="checkbox" name="a" value="2"/></li>
    <li>Row 3: <input type="checkbox" name="a" value="3"/></li>
    <li>Row 4: <input type="checkbox" name="a" value="4"/></li>
    <li>Row 5: <input type="checkbox" name="a" value="5"/></li>
  </ul>
  <input type="submit" name="submit" value="Submit"/>
</form>

...このように送信されます。

http://localhost:8000/foo?a=2&a=3&a=5&submit=Submit

次に、ハンドラー内で、ByteStrings のリストを取得します。

fooHandler = do
    as <- getsRequest (rqParam "a")

したがって、これには JavaScript はまったく必要ありません。しかし、JavaScript でも動作します。jQuery を使用してこのようなリストを送信すると...

var fieldData = { rows: [0,1,4], cols: [2,3,5] };
$.getJSON('http://localhost:8000/foo', fieldData, ...);

...次に、ブラケットを調整する必要があります

rs <- getsRequest (rqParam "rows[]")
cs <- getsRequest (rqParam "cols[]")
于 2013-07-01T18:08:15.343 に答える