Chyba źle zrozumiałeś komunikat błędu. To oznacza, że w bazie danych nie masz obiektu klasy Tabela z identyfikatorem równym 284338.
To nie jest ‘niezainicjowana zmienna’, tylko wynik zapytania SQL “SELECT * FROM tabelas WHERE id = 284338” zwraca zero rekordów.
Co do tej property to dobrze trafiłeś. “Makro” attr_accessor :params definiuje dwie metody w klasie, w której zostało toto uzyte. W tym przypadku zaoszczędza Ci to ręcznego pisania:
def params
@params
end
def params=(v)
@params = v
end
Spokojnie możesz te dwie metody wpisać ręcznie zamiast używać attr_accessor i efekt będzie dokładnie taki sam.
[quote=MaxZorin]Poza tym, tu nie do końca kapuję, konstrukcja typu
@x = Tabela.find(params[:id]).wartosc
nie działa również w modelu Tabela(!?) Czyli nie jest tak, że wszystko co w kontrolerze, modelu czy widoku jest wszędzie w obrębie klasy widoczne. Myślałem, że na tym polega idea. Metody w kontrolerze i ich parametry są widoczne w modelu, który to się komunikuje z bazą. Trochę (nawet więcej niż trochę) mam kłopoty z taką ideą.[/quote]
Nie do końca rozumiem co chcesz powiedzieć. Co znaczy, że konstrukcja nie działa? Błędy zapewne masz różne. Musisz się w nie wczytać.
Jeżeli użyłeś kontrukcji find(params[:id]) w modelu, to dostałeś pewnie błąd związany z brakiem metody ‘params’, albo z tym, że zwracany prze nią obiekt nie rozumie metody “[]”.
Najbardziej mnie zastanawia co właściwie chcesz zrobić. Czy tworzysz program, który ma jakiś konkretny cel, czy po prostu bawisz się językiem?
Proponuję Ci wybrać jakiś rzeczywisty problem, który będziesz programem rozwiązywał. Zalety masz dwie - cel będzie Ci pomagał odrzucać rozwiązania nie mające sensu, a na końcu uzyskasz program, który będziesz mógł zaoferować światu (za odpowiednią kasę lub nie).
Zdefiniuj na początek zadanie. Wtedy łatwiej będzie Ci podpowiedzieć rozwiązania, które można by określić mianem dobrej praktyki - a znajomość dobrej praktyki osobiście cenię bardziej niż znajomość kruczków danego języka (lub frameworka).
Edit: połknąłem kila wyrazów. Pisanie w językach naturalnych przychodzi mi trudniej.