我一直在尝试为我的rails应用创建一个订单确认页面,并且我不太确定如何以一种宁静的方式进行此操作。
this问题上有几个答案让我在那里,但问题是我不太确定如何在rails视图中设置表单以便用户一个包含所有详细信息的确认页面,而不是创建操作。
现在我的观点很简单:
<% form_for :order do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :first_name %><br />
<%= f.text_field :first_name, :size => 15 %>
</p>
<p>
<%= f.label :last_name %><br />
<%= f.text_field :last_name, :size => 15 %>
</p>
(Be sure to enter your name as it appears on your card)
<p>
<%= f.label :card_type %><br />
<%= f.select :card_type, [["Visa", "visa"], ["MasterCard", "master"], ["Discover", "discover"], ["American Express", "american_express"]] %>
</p>
<p>
<%= f.label :card_number %><br />
<%= f.text_field :card_number %>
</p>
<p>
<%= f.label :card_verification, "Card Verification Value (CVV)" %><br />
<%= f.text_field :card_verification, :size => 3 %>
</p>
<p>
<%= f.label :card_expires_on %><br />
<%= f.date_select :card_expires_on, :discard_day => true, :start_year => Date.today.year, :end_year => (Date.today.year+10), :add_month_numbers => true %>
</p>
<p><%= f.submit "Submit" %></p>
我应该做些什么来引导用户到显示所有订单详情的确认页面?
谢谢!
贤治
答案 0 :(得分:10)
对此有一些答案 问题让我在那里, 但问题是我不是 非常确定如何设置表单 rails视图以便它可以 用户到确认页面 他们所有的细节而不是创造 动作。
将表单定向到非标准页面非常简单。
添加网址选项form_for。 这样
<% form_for :order do |f| %>
变为
<% form_for :order :url => {:action => "confirm"} do |f| %>
您需要在路线中创建确认操作,但这只涉及到:
map.resources :orders, :collection => {:confirm => :get}
现在您只需要一个基本的控制器操作和一个视图:
def confirm
@order = Order.new(params[:order])
unless @order.valid?
render :action => :new
else
end
end
您的视图应与show视图几乎完全相同,并添加了一个将表单提交给create动作的表单。
答案 1 :(得分:2)
为什么不通过ajax拉取确认,例如,拉出结果并将其作为叠加div,确认后在表单中提交原始值。
如果您仍然需要按照自己的方式进行操作,请检查wizardly,它是专为此类用途而设计的。