0

私は、erbファイルとメインアプリの間で情報を渡したり、逆にユーザーが複数のフォームに記入したり、URLを操作して必要な正しいフォームにそれらを取得したりできるようにするSintatraアプリを構築しています。

フォーム 1 は /venue/checkin にあります。会場をerbファイルに渡して名前とテーブルを聞く

<form action='<%= @venue %>/<%= @table %>/attempt' method='post' class="form-horizontal">

    <input class="span12" type="text" name='firstname' placeholder="Firstname" autofocus>

    <input class="span12" type="text" name='username' placeholder="Lastname">

    <div class="input-prepend">
        <span class="add-on">Table #</span>
        <input class="span2" id="prependedInput" type="text" name='<%= @table %>' placeholder="4">
        </div>

        <input class="btn btn-large btn-info" type='submit' value='Order'>
</form>

app.rb に戻るように指示するフォームでユーザーが提供する既存の会場名とテーブルに投稿したい

get '/:venue/:table/order' do
  erb :order
end
4

2 に答える 2

1

HTTP 経由で情報を追加または更新する場合、クライアントが操作が成功したかどうかを示すステータス コードを本当に必要としているときに、リダイレクトにステータス コードを使用する必要があるため、最後にリダイレクトしないと便利です。

両方が満足できるように、GET と成功した POST の両方で同じ「注文」ルートを提供してみませんか? 例えば

get "/:venue/:table/order" do
  # get info from storage
  erb :order
end

post "/:venue/:table/order" do
  # get info from params and store it
  erb :order
end

POST ルートは200 (または 201)表示したいものを送り返します。 クライアントが再度注文を表示するように要求した場合は、GET 要求でルートを使用できます。

/venue/table/ に関する唯一の情報が実際に順序である場合、ルートから「順序」を削除しますが、それは私の意見です。

于 2013-06-06T18:52:08.930 に答える