czwartek, 8 listopada 2012

Używanie w Rails tekstu typu String zamiast nazwy pola, metody, alboasocjacji

Czasami występuje potrzeba aby w Rails wywołać jakąś asocjację w kodzie ale zamiast standardowego kodu niech nazwy asocjacji będą stringami.

Czyli zamiast pisać tak:
customer=Customer.find(params[:id])
customer.orders.each do |order|
  # ... tu jakieś operacje z użyciem order ....
end

możemy napisać tak:
customer=Customer.find(params[:id])
customer.send("orders").each do |order|
  # ... tu jakieś operacje z użyciem order ....
end

wtorek, 30 października 2012

Jak przenieść emaile i profil Thunderbirda z komputera na komputer

Oczywiście standardowe zachowania Thunderbirda nie przewidują takiej skomplikowanej operacji. Trzeba więc radzić sobie jakoś samemu.

Oto przepis:

Na nowym komputerze instalujemy świeżą wersję Thunderbirda.
Ze starego komputera kopiujemy pocztę do nowego, dokładnie w takim samym katalogu, w jakim była na starym. Dla skupienia uwagi przyjmijmy, że na starym komputerze cała poczta była w katalogu D:\mail, to i na nowym powinna znaleźć się na D:\mail. Maile przeniesione. Ale co z tego, skoro Thunderbird nic o tym jeszcze nie wie? Potrzebny nam będzie profil Thunderbirda ze starego komputera. Jak go znaleźć? Ano tak:
type %AppData%\Thunderbird\profiles.ini
Nas zainteresuje linijka zaczynająca się od słowa "Path". Podaje ona gdzie dokładnie znajduje się katalog z profilem. Przyjmijmy, że profil jest w katalogu "D:\Users\admin\profile". Kopiujemy więc cały ten katalog ze starego komputera na nowy. Tu już nie jest ważne w jakim katalogu profil się ten znajdzie. Załóżmy, że przekopiujemy na nowym komputerze go do folderu D:\profile.
Prawie gotowe. Wystarczy tylko na nowym komputerze wyedytować plik %AppData%\Thunderbird\profiles.ini i w linijce "Path" wpisać położenie profilu. W naszym przykładzie będzie to D:\profile. Warto jeszcze sprawdzić wpis "IsRelative=0". Jeśli używamy ścieżki z nazwą dysku jak w tym przykładzie, to musi tu być koniecznie 0 (zero).
Teraz odpalamy Thunderbirda i cieszymy się nową (starą) instalacją.

piątek, 21 września 2012

Jak przesłać więcej niż jedną zawartość pola Ajaxem

W Ruby on Rails jest bardzo wygodna pseudokontrolka observe_field. Jednak w swojej podstawowej postaci można przesłać zawartość tylko tego pola, które jest obserwowane. Aby przesłać za jednym razem zawartość większej ilości pól trzeba się trochę pogimnastykować:
<%= f.text_field :first_name %>
<%= f.text_field :last_name %>
<%= observe_field "employee_last_name",
            :url => {:action => :nazwa_metody_w_kontrolerze},
            :update => "div_to_update",
            :frequency => 1,
            :with => "Form.serializeElements($('employee_last_name', 'employee_first_name'))" %>
No i jest. Teraz w metodzie nazwa_metody_w_kontrolerze zmienna parameters dostarcza nam imię i nazwisko pracownika w postaci:
params[:employee][:first_name]
params[:employee][:last_name]

niedziela, 27 maja 2012

Dzielenie modulo

Dzielenie modulo zwraca resztę z dzielenia. Tzn jeżeli dzielimy liczbę całkowitą przez drugą całkowitą (bo tylko na takich liczbach operacja ta jest dozwolona) to często wynikiem jest ułamek. np wynik dzielenia 3/2 będzie 1 (jeżeli wynik ma być typu int) żeby określić jaka liczba jest po przecinku stosujemy dzielenie modulo. Wynik tego dzielenia też jest zawsze typu int. Jeżeli wynikiem dzielenia jest liczba całkowita np: 4/2=2, to wynikiem dzielenia modulo jest 0 (4%2=0). W ten sposób bada się parzystość liczby. Składnia:
liczba1 % liczba2

poniedziałek, 16 kwietnia 2012

Powershell - uruchamianie własnych skryptów

Windows jak to windows - wie wszystko lepiej. Wie lepiej od Ciebie drogi czytaczu czy Ty chcesz uruchomić własny skrypt, czy nie. Na tyle wie lepiej, że jak napisz swój skrypt w sensacyjnym powershell, to i tak go nie uruchomisz. Twój windows wie, że nie można tobie go uruchamiać. Tę wyjątkową złośliwość systemu uzasadnianą troską o Ciebie czytaczu można (na szczęście) jakoś ominąć.
Uruchom więc powershell jako administrator.
W linii komend wpisz:
Set-ExecutionPolicy RemoteSigned
teraz własne skrypty będziesz mógł uruchamiać, a te pobrane z Internetu muszą być wiarygodnie podpisane.

czwartek, 15 marca 2012

Mapy tras zgodne z architekturą REST W Rails

Twórcy Ruby on Rails dokonali dużego wysiłku aby się dostosować do architektury REST. Niektórzy określają to jako na wyrost, a inni jako na siłę. Faktem jest jednak to, że dzięki takiemu podejściu powstało wiele udogodnień. Jednym z nich jest unifikacja tras.
Tu szczegóły dla modelu Product:
w pliku routes.rb powstał zapis
map.resources :products
dzięki temu jednemu zapisowi powstała mapa tras:
Metoda Ścieżka Akcja Metoda pomocnicza
GET /products index products_url
GET/products/newnewnew_product_url
POST/productscreateproducts_url
GET/products/1/editeditedit_product_url(:id => 1)
PUT/products/1updateproducts_url(:id => 1)
GET/products/1showproduct_url(:id => 1)
DELETE/products/1destroyproduct_url(:id => 1)

piątek, 9 marca 2012

Warunkowy operator trójargumentowy lub po prostu '?'

Nigdy nie mogę zapamiętać tej składni więc raz na zawsze sobie to tutaj zapiszę.
Zapis
label = length == 1 ? " argument" : " argumenty"
Powyższe wyrażenie przypisuje do zmiennej label łańcuch tekstowy w liczbie pojedynczej lub mnogiej. Oczywiście w zależności od wartości logicznej warunku
length == 1
Jeśli warunek jest prawdziwy to liczba pojedyncza, jeśli warunek jest fałszywy, to liczba mnoga.