Coś się ruszyło

04 czerwca 2007, 02:40:25

Poziom: 0 | Kategoria: Komputerowo-internetowo, Ruby on Rails, Studia, Web Design.

Zacząłem wreszcie pisać projekt na bazy danych. Z każdą linią kodu utwierdzam się w przekonaniu, że Ruby on Rails to świetne środowisko do przyjemnego pisania aplikacji. Wychwalać też będę doskonałe NetBeansy w wersji 6, bez których pisało by się kilka razy wolniej.

W tej chwili mam już prostą autoryzację użytkowników opartą na trzech kategoriach – zwykłych użytkowników, którzy będą mogli nadsyłać rozwiązania, sędziów, którzy te rozwiązania sprawdzą i ocenią (zrezygnowałem na razie z pisania sprawdzaczki) oraz administratorów, którzy mogą dodawać zadania, konkursy, itp. Skończyłem też administrację konkursami – można dodawać/edytować/usuwać konkursy oraz wgrywać pliki z zadaniami. Proste forum w zasadzie też mam już skończone, muszę je tylko zintegrować.

Przede mną chyba najgorsza część, czyli implementacja wysyłania rozwiązań, oceniania ich przez sędziów oraz wyświetlanie jakiś rankingów. Myślę też nad prezentacją statystyk w formie wykresów.

Oczywiście nie obyło się bez problemów – nie mam pojęcia dlaczego giną mi parametry przesyłane z formularza do dodawania nowych zadań i muszę szpecić definicję metody kontrolera dodatkowymi liniami kodu, które uzupełnią brakujące pola. Wygląda to mniej więcej tak:

def create
    if request.post?
      @problem = Problem.new(params[:problem])
      @problem.name = params[:problem][:name]
      @problem.short_name = params[:problem][:short_name]
      @problem.contest_id = params[:problem][:contest_id]

      if @problem.save
        flash[:notice] = 'Zadanie zostało dodane.'
        redirect_to :action => 'list'
      else
        redirect_to :action => 'new'
      end
    end
  end

Szkoda tylko, że nie wiem, ile mam czasu, bo nigdzie nie podano terminu oddania pierwszej części projektu...

Tagi:

Komentarze do notki “Coś się ruszyło”:

  1. Seban

    Nie uważasz, że ta metoda create ma za dużo linii?
    Nie wiem jak masz zbudowany formularz, ale ja bym jakoś tak tego create’a zrobił
    def create problem = Problem.new(params[:problem]) if problem.save flash[:notice] = „Zadanie zostało dodane” redirect_to :action => „list” else render :action => „new”
    end

    Można by też to zrobić jeszcze inaczej i użyć dziedziczonej z ActiveRecord::create zamiast save, tylko wtedy musiałbyś chyba jakoś inaczej (niż create) nazwać tą metodę. Wtedy można by pisać if Problem.create(params[:problem]) ...

  2. GhandaL

    Właśnie o to chodzi, że jest za dużo kodu – powinno wystarczyć problem = Problem.new(params[:problem]) i potem problem.save, jednak nie wiem czemu po drodze giną mi parametry formularza, które dodaje w trzech liniach poniżej (name, short_name i contest_id).

  3. Ein

    „Nie uważasz, że ta metoda create ma za dużo linii? „ hahahahahaaaa…

    BTW, dorób moduł zapisujący treść zadania w formacie PDF/PS (lepiej PDF). Fajny i przydatny szczegół :).

  4. Cinu

    GhandaL, fAjNy Bl0gAsssek! Pozdroofka ;)

Zostaw komentarz (Textile włączony):