mam pole Ocena i chciałem zrobić 5 pól z oceną tekstową i kropkami do wyboru danej oceny (coś w rodzaju kropka Bardzo Dobry, kropka Dobry itp). Można wybrać tylko jedną ocenę, ocena jest zapisywana do bazy w stringu.
protected
def user_signed_in?
current_user ? true : false
end
def authenticate_user!
redirect_to :log_in unless user_signed_in?
end
end[/code]
Wtedy chronione będą wszystkie kontrolery dziedziczące po ApplicationController. Jeżeli chcesz pominąć autentykacje:
I przy okazji - jesteś pewien, że zapisywanie w stringu to jest dobre rozwiązanie? Może i to nie jest jakaś duża aplikacja, ale lepiej sobie trzymać oceny jako liczby (1…6), a potem tylko zamienić je na tekst np. za pomocą tablicy:
ocena = 5
stopnie[ocena] # => “bardzo dobry”[/code]
A jeśli chodzi o html, może zamiast radioboxa, wygodniejszy będzie select box (lista rozwijana)? : )
Powiedz co chcesz dokładnie uzyskać, czego nie wiesz, pokaż jakiś kawałek kodu z którym masz problem. Bez tego będzie ciężko :)[/quote]
Nie wiem po prostu jak wyświetlić select albo “kropkoboxa” i zapisać. Wiem jedynie jak to jest z polem tekstowym <%= f.text_field :zmienna %>
spróbuj https://github.com/edgarjs/ajaxful-rating. w README masz wszystko mniej więcej opisane. Jakbyś miał jakiś problem, pytaj
Nie wiem tylko jak to działa z Rails3. Widzę, że jest oddzielny branch rails3. Jakby master nie działał, spróbuj w Gemfile:
[quote=swistak35]I przy okazji - jesteś pewien, że zapisywanie w stringu to jest dobre rozwiązanie? Może i to nie jest jakaś duża aplikacja, ale lepiej sobie trzymać oceny jako liczby (1…6), a potem tylko zamienić je na tekst np. za pomocą tablicy:
ocena = 5
stopnie[ocena] # => “bardzo dobry”[/code]
[/quote]
Chciałem wykorzystać to w widoku, wrzuciłem tą tablice w model, w widoku wyświetlam w pętli, ale dostaję bład niezdefiniowana zmienna stopnie.
@gotar z jakiegoś konkretnego powodu te tymczasowe zmienne i returny? nie lepiej
[code=ruby]# encoding: UTF-8
def stopnie
[“niedostateczny”, “dopuszczający”, “dostateczny”, “dobry”, “bardzo dobry”, “celujący”]
end
def stopien(ocena)
stopnie[ocena.to_i-1]
end[/code] @chinchin lepiej ocen (“dopuszczający”, “dobry”) nie definiować w helpere, ale jeśli już to pamiętaj o pierwszej linijce ("#encoding: UTF-8"), bez tego będzie wyrzucało błąd. Najlepiej jednak użyć i18n
Jeśli coś piszę dla kogoś kto mało jeszcze wie to rozpisuję jak się da by widać było skąd i czemu, ale oczywiście można to skracać i przerabiać wiele razy. Jak napisałem
[cite]
Bardzo prosty i az przesadny przyklad
[/cite]
No okej, może drugi mój przykład już trochę przekombinowany (więcej pisania a interfejs taki sam jak w przypadku zwykłej tablicy i pierwszego pustego elementu - rozwiązanie świstaka35 :D), ale pierwszy imho nie jest bardziej skomplikowany, a za to bardziej ruby way (czyli tak, jak początkujący powinni od początku się uczyć)
Dałem ten pusty element żeby było jakoś tak prościej dla początkującego, chociaż jak to się drugi raz przeczyta to to trochę głupie, ale “intuicyjniej” wywoływać : )
A to co wkleiłeś… Jak to działa? Pierwszy raz widzę takie cuda “->” w rubim… Jak to się nazywa i gdzie to opisane? : >
Trik poznany z definicji miesięcy dla i18n (ten z nilem na początku). Reszto to takie moje dodakti:
[code]STOPNIE = [nil, “niedostateczny”, “dopuszczający”, “dostateczny”, “dobry”, “bardzo dobry”, “celujący”].map(&:freeze).freeze # albo jeszcze lepiej użyć konstrukcji %w()
def stopnie
STOPNIE
end
Cześć,
stworzyłem metode w ApplicationController w sekcji protected sprawdzajaca jaki jest to typ użytkownika zwraca ona wartość true lub false.
Jeśli w kontrolerze użyję before_filter :metoda i potem w plikach tej samej klasy w views użyję <% if @metoda %> to kod dziala dobrze, natomiast jesli użyję <% if @metoda %> w views innej klasie (tez dziedziczacej z ApplicationController) bez uzycia befor_filter to niestety kod nie działa dobrze, jest jakby ciągle false.
jak zrobić, zeby korzystać z tych metod w dowolnym miejscu ? Umieściłem je w sekcji public ale bez zmian