czwartek, 31 marca 2011

Stronicowanie w Ruby on Rails - najpopularniejsze opcje

Mowa oczywiście o pluginie do Ruby on Rails o nazwie will_paginate.

Aby go zainstalować z konsoli zawołaj:
gem install will_paginate
potem do
/config/environment.rb
wpisz
config.gem 'will_paginate', :version => '~> 2.3.15'
przy czym uwaga! :version => '~> 2.3.15' nie tyczy się wersji rails, tylko wersji tego plugina!

Opcje wyświetlania:
  • :previous_label — domyślnie: "« Previous", nazwa linka do poprzedniej strony
  • :next_label — domyślnie: "Next »" , nazwa linka do następnej strony
  • :page_links — kiedy jest to false, tylko poprzedni/następny link jest renderowany (domyślnie: true)
  • :inner_window — mówi ile linków widnieje przed i za aktualną stroną (domyślnie: 4)
  • :outer_window — mówi ile linków widnieje dookoła pierwszej i ostatniej strony (domyślnie: 1)
  • :separator — string reprezentujący separator oddzielający numerki stron (domyślnie: pojedyncza spacja) 
Na przykład:
<%= will_paginate @customers, :previous_label => "wstecz", :next_label => "dalej" %>


Opcje HTML:
  • :class — nazwa klasy CSS dla wygenerowanego DIV'a (domyślnie: "pagination")
  • :container — przełącza renderowanie dla podanego wcześniej DIV'a. Ustaw na false tylko w przypadku stosowanie własnych rozwiązań (domyślnie: true)
  • :id — HTML ID dla kontenera z linkami  (domyślnie: nil). Ustaw true dla automatycznego rozpoznawania ID z nazwy klasy obiektów kolekcji. Na przykład jeśli stronicujesz model ArticleComment to automatycznie zostanie nadany ID "article_comments_pagination". 
Opcje zaawansowane:
  • :param_name — nazwa parametru zawartego w URL  (domyślnie:page)
  • :params — dodatkowe parametry przy generowaniu stronicowania (na przykład :controller => "foo", :action => nil)
  • :renderer — nazwa klasy, klasa lub instancja klasy dla renderowanych linków (domyślnie: WillPaginate::LinkRenderer)
Wszystkie opcje rozpoznawane przez will_paginate stają się automatycznie opcjami kontenera DIV. Na przykład:
<%= will_paginate @posts, :style => 'font-size: small' %>
… staje się po renderowaniu:
<div class="pagination" style="font-size: small"> ... </div>



Pełna dokumentacja na naszej stronie poświęconej dokumentacji API will_paginate.


Stronicowanie w Ruby on Rails - dokumentacja do API

Skądinąd dobry plugin dla Ruby on Rails do stronicowania o tajemniczej nazwie will_paginate ma kilka ciekawych możliwości. Niestety o możliwościach tych nie dowiesz się ze strony macierzystej. Większość linków tam nie działa. Nie pytaj dlaczego. Nie wiem. Nie wiedzą również o tym inni internauci. Powstają na grupach nawet wątki z pytaniami do autora o ten fenomen.

Kogo denerwuje brak dokumentacji do API tego pluginu mam dla niego rozwiązanie. Jako, że nas to też wkurzyło przygotowaliśmy dla wszystkich dokumentację API dla will_paginate v. 2.3.15. Korzystaj :-)


niedziela, 27 marca 2011

Jak w C++ zainicjalizować otwarcie pliku klasą std::string

#include <iostream>
#include <fstream>
#include <string>

int main()
{
  std::string filename = "testfile";      
  std::ifstream fin;

  fin.open(filename.c_str()); // Works just fine.
  fin.close();

  //fin.open(filename); // Error: no such method.
  //fin.close();
}

Pełny tekst tutaj:
http://stackoverflow.com/questions/32332/why-dont-the-stdfstream-classes-take-a-stdstring

Polskie literki w czystym Qt

w nagłówku:
#include <QTextCodec>

na początku programu należy wywołać:

// w tłumaczeniach np. tr("ąśżźćółń");
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
// w pozostałych tekstach klasy QString
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));