routes.rb (resource) -> controller -> widok -> partial. Poza tym czy jesteś pewien że to ten model?
Nie napewno nie ten model, akurat tutaj próbowałem samemu zrobić jakiś model i nic mi nie wychodziło.
W readme spree_newsletter_subscribers jest tylko to : And…Insert partial into views where appropriate nie ma nic jak to podłączyć do strony, jak np mogę wdrożyć swój newsletter
Panel admina wygląda tak
screenchoty konsoli i edytora? o_O
używaj znacznika [ code ] (np. [ code=ruby ], bez spacji oczywiście), ewentualnie wrzuć tutaj: https://gist.github.com/
A poza tym:
- Nie nazywaj klas polskimi nazwami.
- Jako taba używaj dwóch spacji (w ST2 łatwo skonfigurować takie domyślne użycie taba).
Co do samego extensiona - zajrzałem tam i nie widzę by robił to, co ma robić
Musisz sobie stworzyć jakąś route, do niej kontroler i widok (bo model jakiś tam niby jest).
Nie wiem, czy nie lepiej zrobić sobie takie coś samemu from scratch (nie zapomnij później wrzucić tego na githuba )
Jakieś skrawki podobnego plugina widziałem też tutaj: https://github.com/complistic-gaff/spree-newsletters
Trochę inaczej robię zainstalowałem spree_mail_chimp on ma te wszystkie moduły które mnię interesują tylko po kliknięciu przycisku subscribe dostaję błąd : uninitialized constant Hominid::ListError ?
zlw i Lypa dzięki chłopaki za uwagi wezmę je do serca
Wrzuć gdzieś pełen backtrace i kod jak to robisz, to coś postaram się poradzić.
Kod w moim pliku spree_application.html.erb wyglada tak:
<div id="footer_right">
<%= render :partial => 'spree/shared/newsletter_subscribe_form' %>
<div id="footer_info">
<div id="footer_dane">
<div id="footer_pay">
Natomiast w pliku views / spree / shared / _newsletter_subscribe_form.html.erb
[code]
<%= form_for :user, :url => :subscriptions do |f| %>
<%= text_field_tag :email, t(‘enter_your_email’), :class => ‘email’, :id => ‘subscribe_email’ %> |
<%= submit_tag t(‘subscribe’), :id => ‘op_subscribe’ %> |
<% end -%>
def hominid
@hominid ||= Hominid::Base.new({ :api_key => Spree::Config.get(:mailchimp_api_key) })
end
def create
@errors = []
if params[:email].blank?
@errors << t('missing_email')
elsif params[:email] !~ /[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i
@errors << t('invalid_email_address')
else
begin
self.class.benchmark "Checking if address exists and/or is valid" do
@mc_member = hominid.member_info(Spree::Config.get(:mailchimp_list_id), params[:email])
end
rescue Hominid::ListError => e
end
if @mc_member
@errors << t('that_address_is_already_subscribed')
else
begin
self.class.benchmark "Adding mailchimp subscriber" do
hominid.subscribe(Spree::Config.get(:mailchimp_list_id), params[:email], {}, MailChimpSync::Sync::mc_subscription_opts)
end
rescue Hominid::ValidationError => e
@errors << t('invalid_email_address')
end
end
end
respond_to do |wants|
wants.js
end
end
end[/code]
A gdy wpisuję tu :
Wyrzuca mi to:
Zapomniałem dodać mam spree 1.1.3 dotego Mail Chimp mam nadany API Key i List ID
Spróbuj jakiś bardziej generyczny error tam łapać zamiast Hominid::ListError (w subscriptions_controller.rb:19)
? Nie rozumiem ocb…
Próbujesz tam złapać:
rescue Hominid::ListError => e
A ja miałem na myśli, byś złapał tam jakiś inny (wyżej w hierarchii klas) wyjątek.
Wiem, z czego korzystasz
Podałem Ci linijkę i co możesz spróbować zmienić, nie rozumiem czego nie rozumiesz
No właśnie dalej nie wiem co mam zmienić jaki wyżej wyjątek. Ta część linijki kodu którą podałeś jest identyczna z kodem błędu.
Dla mnie łopatologicznie proszę
Ok, łopatologicznie:
Hominid::ListError po czymś dziedziczy (nadrzędny error), więc złap (rescue) ten nadrzędny error w tej linijce zamiast tego, który aktualnie łapiesz.
doczytaj o wyjątkach w Rubym, jak je obsługiwać, jaka jest hierarchia itd. - http://rubylearning.com/satishtalim/ruby_exceptions.html
Może Tobie to oczywiste, dla mnie nie bardzo … Możesz przytoczyć jakiś przykładowy fragment kodu abym prezentujący tę zależność? Abym wiedział dokładnie czego szukać.