Question

J'ai essayé de créer une page de confirmation de commande pour mon application rails, et ne suis pas tout à fait sûr de savoir comment s'y prendre d'une manière reposante.

Il y avait quelques réponses sur cette question qui m'a à mi-chemin, mais le problème était que je n'étais pas sûr de savoir comment mettre en place la forme dans les rails voir afin qu'il prendrait l'utilisateur vers une page de confirmation avec tous les détails au lieu d'une action créer.

En ce moment, mon avis est 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>

Que devrais-je faire pour diriger l'utilisateur vers une page de confirmation qui affiche tous les détails de la commande?

Merci!

Kenji

Était-ce utile?

La solution

  

Il y avait quelques réponses sur ce   question qui m'a à mi-chemin,   mais le problème était que je ne   tout à fait sûr comment mettre en place la forme   les rails vue afin qu'il prendrait   l'utilisateur vers une page de confirmation   tous les détails au lieu d'une création   action.

Diriger une forme à une page non standard est assez simple.

Ajouter une option URL form_for . Telle que

<% form_for :order do |f| %>

devient

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

Vous aurez besoin de l'action caisse de confirmation dans vos itinéraires, mais qui implique seulement ceci:

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

Tout ce que vous avez besoin est maintenant une action de contrôleur de base et une vue:

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

Votre point de vue devrait ressembler presque identique à la vue du spectacle, avec l'ajout d'un formulaire présentant @Order à l'action de créer.

Autres conseils

Pourquoi ne pas vous tirez la confirmation par ajax, par exemple, tirer le résultat et le mettre comme div overlay, lors de la confirmation présenter les valeurs d'origine sous la forme.

Si vous avez encore besoin de le faire votre chemin puis vérifiez wizardly , il est exactement conçu pour de telles utilisations .

Je voudrais mettre à jour la réponse pour Rails plus élégants 4 ou plus. J'espère que cela aidera les débutants comme moi. Ruby est génial! :)

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| %>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top