我有以下代码来创建产品:
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| %>
现在,我想知道,在将数据保存到数据库之前,如何将使用转移到单独的确认页面。还有一个编辑链接,所以如果需要,用户可以进行更改并最终提交记录。
我查看了stackoverflow上的其他问题,但无法创建我想要的内容。任何指导都表示赞赏。
答案 0 :(得分:1)
如果您想进行客户端确认,则需要使用JavaScript来监听“表单提交”事件。然后使用jQuery html()显示要求继续的灯箱。它与using onsubmit event和rendering a confirmation box有关。另一种使用数据属性的方法是here
如果您想要数据库跟踪进行确认(服务器端),您可以在“show”操作中渲染模型,但使用不同的按钮组。
在你的节目视图中,你会这样做:
<% if @product.confirmed? %>
... # normal path to actions for show (edit, delete, back )
<% else %>
<%= link_to "Confirm', confirm_product_customer_path(@product, @customer) %>
<% end %>
但是,在数据库中有一个确认属性,有时候有点矫枉过正。正如Jani在评论中所建议的那样,客户端确认对大多数情况来说已经足够好了。
答案 1 :(得分:1)
您可以使用带参数的新按钮:
<%= f.submit %>
<%= f.submit "Preview", :name => 'preview' %>
并在您的控制器中,在创建操作中:
if params[:preview]
@product = Product.new(params[:product])
render 'products/previw'
else
# save your object
end
并创建一个新的部分预览。