在rails中订购确认页面

时间:2009-12-14 20:38:38

标签: ruby-on-rails forms rest routes confirmation

我一直在尝试为我的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>

我应该做些什么来引导用户到显示所有订单详情的确认页面?

谢谢!

贤治

2 个答案:

答案 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,它是专为此类用途而设计的。