[code] def index
if session[:user_id] == nil
redirect_to :controller => “sessions”, :action => ‘new’
end
user = User.find(session[:user_id]) @nick = user.nick @money = user.money
end
def building
end[/code]
powiedzmy będę maił w grze pasek z info ile mamy pieniędzy i kilka jeszcze innych parametrów wyświetlany w każdym widoku.
Średnio mi się widzi kopiować dotychczasową zawartość index do pozostałych akcji co będzie średnio zgodne z zasadą DRY macie jakiś pomysł jak to rozwiązać nic mi na razie nie przychodzi do głowy
def current_user_required
if session[:user_id].nil?
redirect_to(:controller => "sessions", :action => 'new') and return
end
@user = User.find(session[:user_id])
end
helper_method :current_user_required
a później używać ją w before_filter tam gdzie wymagany jest @user
[quote=maykel]Możesz napisać metodę w ApplicationController
helper_method :current_user_required
a później używać ją w before_filter tam gdzie wymagany jest @user
before_filter :current_user_required
[/quote]
Wystarczy po prostu stworzyć metodę prywatną w ApplicationController. Metoda helper_method służy do tworzenia helperów używanych w widoku i umieszczanie w nich redirectów nie jest dobrym pomysłem.
co do autentykacji: spróbuj może jakiegoś gem-a (devise?) żeby nie odkrywać koła na nowo
co do helperów z pieniędzmi itp. możesz to zrobić np. tak:
dodaj w layoucie
<% if user_signed_in? %>
<%= render 'user_info' %>
<% end %>
i w /app/views/application/_user_info.html.erb
<%= current_user.nick %>
<%= current_user.money %> #user_signed_in? i #current_user to metody z devise, jeżeli użyjesz innego gem-a to pewnie będą inne
Co do uwierzytelniania, to już dostałeś odpowiedzi - użyj jakiegoś gema, który Ci ułatwi sprawdzanie czy ktoś jest zalogowany.
Co do reszty (tzn. kopiowania pobierania np. money w wielu akcjach), to zobacz cells: http://github.com/apotonick/cells W README masz przykład koszyka w sklepie internetowym, to jest podobny problem.
Ok to biorę się jeszcze raz za devise coś mi nie działało jak to próbowałe ostatnio odpalić ;( zobaczymy na czym tym razem stanie Dobrze że można liczyć na wasze wsparcie !
Już wiem co mi nie działało i nie działa dalej z devise nie mam formularzy np sing_in :
w routes.db mam dodanie devise :players, po wykonaniu rake routes routingi są widoczne np /players/sing_in mimo tego po odpaleniu adresu otrzymuję routing error ;(
proces instalacji jak w railscast 209 wszystko śmiga bez błędów do momentu wyświetlenia formularza z rejestracją . Nie mam pojęcia co z tym zrobić ;( może ktoś z was miał już taki problem ?
@edit
hmm nie wiem dlaczego to miało taki wpływ ale brak linijki w routes.rb root :to sprawia że są jakieś błędy po dodaniu jej wszystko jest ok