Pregunta

He estado tratando de crear una página de confirmación del pedido para mi carriles de aplicación, y no estoy muy seguro de cómo ir sobre él de una manera tranquila.

Hubo algunas respuestas en este pregunta que me consiguió a mitad de camino, pero el problema era que no estaba muy seguro de cómo configurar la forma de los carriles de ver por lo que sería llevar al usuario a una página de confirmación con todos sus detalles en lugar de crear una acción.

En este momento mi punto de vista es simple:

        <% 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>

¿Qué cosas debo hacer para dirigir al usuario a una página de confirmación que muestra todos los detalles de la orden?

Gracias!

Kenji

¿Fue útil?

Solución

  

Hubo algunas respuestas en este   pregunta que me consiguió a mitad de camino,   pero el problema era que no estaba   muy seguro de cómo configurar la forma en   los carriles de vista para que se necesitaría   al usuario a una página de confirmación con   todos sus detalles en lugar de crear una   acción.

Dirección de un formulario en una página que no es estándar es bastante simple.

Añadir una opción url form_for . Tal que

<% form_for :order do |f| %>

se convierte

<% form_for :order :url => {:action => "confirm"} do |f| %>

Necesitará cajón de la acción confirman en sus rutas, pero que sólo implica lo siguiente:

map.resources :orders, :collection => {:confirm => :get}

Todo lo que necesita ahora es una acción de controlador básico y un punto de vista:

def confirm
  @order = Order.new(params[:order])
  unless @order.valid?
    render :action => :new
  else       
  end
end

Su visión debe ser casi idéntica a la vista de presentación, con la adición de una forma de presentar @order a la acción create.

Otros consejos

¿Por qué no se tire la confirmación a través de AJAX por ejemplo, tirar el resultado y lo pone como una superposición div, después de la confirmación presentar los valores originales en la forma.

Si usted todavía tiene que hacerlo a tu manera a continuación, comprobar wizardly , está diseñado precisamente para tales usos .

Me gustaría actualizar la respuesta para los carriles más elegantes 4 o hacia arriba. Espero que ayudará a los novatos como yo. Ruby es increíble! :)

routes.rb

resources :orders do
  collection do
    post 'confirm'
  end
 end

orders_controller.rb

def confirm
  @order = Order.new(order_params) # GET THE POST parameters
  render :new if @order.invalid? # Return if false
end

form.html.erb

<%= form_for @order, url: {action: 'confirm'} do |f| %>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top