Bir müşterinin bir abonelik oluşturmasına olanak sağlayacak olan Spree 1.2 mağazama fazladan bir adım eklemeye çalışıyorum. Adımı ekledim ve doğru görüntüyü oluşturdum, ancak kullanıcı 'kaydet ve devam et' düğmesini tıklattığında bir sonraki adım işlenir, ancak hiçbir şey gerçekten kaydedilmez.Spree ödeme işlemine bir adım ekleme
Ben state_callback eklemem gerekiyor anlıyorum, ama (oldukça yeni muhtemelen çünkü) Şu anda
bende ben bunu nasıl emin değilim ve Spree dokümantasyon çok bu çevrede eksik benim uzantısı aşağıdaki:
accepts_nested_attributes gereklidir, ancak bitti yani bu benim dev yaklaşım, bugüne kadar deneme yanılma olmuş/order_decorator.rbSpree::Order.class_eval do
belongs_to :subscription
accepts_nested_attributes_for :subscription
# This doesn't appear to be called
Spree::Order.state_machine.after_transition :from => :subscription,
:do => :valid_subs?
checkout_flow do
go_to_state :address
go_to_state :subscription
go_to_state :payment, :if => lambda { |order| order.payment_required? }
go_to_state :confirm, :if => lambda { |order| order.confirmation_required? }
go_to_state :complete
remove_transition :from => :delivery, :to => :confirm
end
end
tam olarak emin değiliz o
modeller/çılgınlığı orada kalıyorum.
modellerinde/subscription.rb
class Subscription < ActiveRecord::Base
attr_accessible :start_date, :frequency
belongs_to :user
has_many :orders
has_many :products
validates :start_date, :frequency, :presence => true
def schedule
...code that returns a list of dates rendered on FE...
end
private #----
... some methods used in schedule ...
def valid_subs?
binding.pry # never called
end
def after_subscription
binding.pry # never called either...
end
end
görüntüleme/çılgınlığı/ödeme/_subscription.html.erb
<h1><%= t(:"subscription.title") %></h1>
<div class="columns alpha six" data-hook="subscription_calendar_fieldset_wrapper">
<fieldset id="subscription_calendar" data-hook>
<%= form.fields_for :subscription_picker do |subscription_picker| %>
<legend><%= t(:"subscription.first_delivery") %></legend>
<%= render :partial => 'subscription/picker' %>
<% end %>
</fieldset>
</div>
<div class="columns omega six" data-hook="subscription_dates_fieldset_wrapper">
<fieldset id="subscription_dates" data-hook>
<legend align="center"><%= t(:"subscription.next_deliveries") %></legend>
<div class='dates'></div>
</fieldset>
</div>
<div class="form-buttons" data-hook="buttons" style='clear:both;'>
<%= submit_tag t(:save_and_continue), :class => 'continue button primary' %>
</div>
görüntüleme/üyelik/_picker.html.erb
<div class='row'>
<label for="subscription_frequency">Occurs every:</label>
<% frequency_options = [["2 Weeks", 14], ["3 Weeks", 21], ["Month", 30], ["2 Months", 60], ["3 Months", 90]] %>
<%= select(:subscription, :frequency, options_for_select(frequency_options, 30), {}) %>
</div>
<div id="start-date-picker" class="calendar"></div>
<%= hidden_field(:subscription, :start_date, {value: (DateTime.now + 14).to_date.iso8601}) %>
... JS that creates the calendar ...
'Kaydet ve devam' butonuna tıkladıktan sonra aşağıdaki paramları görüyorum:
{
"utf8" => "✓",
"_method" => "put",
"authenticity_token" => "...BLAH...",
"subscription" => {
"frequency" => "30",
"start_date" => "2012-11-17"
},
"commit" => "Save and Continue",
"controller" => "spree/checkout",
"action" => "update",
"state" => "subscription"
}
Dekoratörünüz için otomatik bir testiniz var mı? Testlerde ne görüyorsun? Kayıtlar ünite test seviyesinde kaydedilir mi? – WattsInABox