0

製品を作成するための以下のコードがあります。

def create
    @customer = Customer.find(params[:customer_id])
    @product = @customer.products.build(params[:product])

    respond_to do |format|
      if @product.save
        format.html { redirect_to customer_products_path(@customer), notice: 'Product was successfully created.' }
      else
        format.html { render action: "new" }
        format.json { render json: customer_products_path.errors, status: :unprocessable_entity }
      end
    end
  end

私が使用するフォームを生成するには:

<%= form_for([@customer, @product]) do |f| %>

さて、データをDBに保存する前に、別の確認ページに使用を転送するにはどうすればよいでしょうか。また、編集リンクがあるため、必要に応じてユーザーは変更を加え、最終的にレコードを送信できます。

stackoverflow に関する他の質問を見ましたが、必要なものを作成できませんでした。任意のガイダンスをいただければ幸いです。

4

2 に答える 2

1

クライアント側の確認を行いたい場合は、JavaScript を使用して「フォーム送信」イベントをリッスンする必要があります。次に、jQuery html() を使用して、続行するかどうかを尋ねるライトボックスを表示します。これは、onsubmit イベントの使用確認ボックスのレンダリングに関連します。データ属性の別の方法については、こちらで説明しています

確認のためにデータベースの追跡が必要な場合 (サーバー側)、モデルを「表示」アクションでレンダリングできますが、ボタンのセットが異なります。

ショー ビューで、次のようにします。

<% if @product.confirmed? %>
    ... # normal path to actions for show (edit, delete, back )
<% else %>
    <%= link_to "Confirm', confirm_product_customer_path(@product, @customer) %>
<% end %>

ただし、データベースに確認用の属性を設定すると、少しやり過ぎになることがあります。Jani がコメントで示唆しているように、ほとんどの場合、クライアント側の確認で十分です。

于 2013-05-20T13:13:57.700 に答える
1

パラメータで新しいボタンを使用できます。

  <%= f.submit %>
  <%= f.submit "Preview", :name => 'preview' %>

コントローラーの作成アクションで:

if params[:preview]
@product = Product.new(params[:product])
render 'products/previw'
else
# save your object
end

プレビュー用に新しいパーシャルを作成します。

于 2013-05-20T13:24:14.087 に答える