Witam!
Mam następujący problem: chciałbym, żeby użytkownik po zalogowaniu mógł przeglądać profile innych userów (users/:id), a niezalogowany - localhost:3000/:login. Męczę się z tym od wczoraj, niby takie łatwe, ale ciągle coś nie wychodzi
[code=ruby]class UsersController < ApplicationController
before_filter :niezalogowany, :only => [:name, :new, :create]
before_filter :zalogowany, :only => [:show, :edit, :update]
before_filter :redaktor, :only => [:index, :destroy, :enable]
def show
@user = User.find(params[:id])
end
def name
@user = User.find_by_login(params[:id]) #czy params[:login] - nie dziala
end
end[/code]
show.html.erb<h2>User: <%=h @user.login %></h2>
Mail: <%= @user.email %>
Skąd: <%=h @user.location %>
...
name.html.erb<h2>User: <%=h @user.login %></h2>
routes.rb[code]
map.resources :users, :member => { :enable => :put } do |users|
users.resource :account
users.resources :roles
end
map.name ‘/:id’, :controller => ‘users’, :action => ‘name’[/code]
Wywołanie (jeśli user jest niezalogowany): localhost:3000/admin lub localhost:3000/users/name/admin - działa, jednak gdy próbuje zalogować się, to pokazuje się błąd:
NoMethodError in Users#name
You have a nil object when you didn’t expect it!
The error occurred while evaluating nil.login
Extracted source (around line #2):
User: <%=h @user.login %>
Ma ktoś jakieś pomysły, jak rozwiązać ten problem?
Pozdrawiam