Имя пользователя в профиле для Rails - PullRequest
1 голос
/ 03 марта 2011

Использование RoR 2.3.8.У меня есть следующие коды:

user.rb

def to_param
  "#{login.downcase.gsub(/[^[:alnum:]]/,'-')}".gsub(/-{2,}/,'-')
end

people_controller.rb

def show
  @person = User.find(params[:id])

  if current_user == @person
    @posts = @person.posts.paginate(:page => params[:page], :order => order)
  else
    @posts = @person.posts.by_status('published').paginate(:page => params[:page], :order => order)
  end
end

У меня естьстолбец login в Users базе данных, где уникальное имя пользователя.People - это просто контроллер для отображения некоторых сообщений, созданных пользователем.

Я обычно буду ссылаться на index.html.erb под моим people контроллером с URL-адресом http://localhost:3000/people/2 со следующим примером кода в User'sposts:

<a href="<%= person_path(@post.user.id) %>"><%=h @post.user_name %></a>

Я хочу, чтобы URL был http://localhost:3000/people/victor, где victor - это login для пользователя.Этот URL также должен отображать профиль show.html.erb в people контроллере.

Что еще мне нужно сделать?Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 марта 2011

Я бы изменил route.rb, что-то вроде этого:

match 'people/:login' => 'people#show', :as => 'login'

А затем изменил people_controller.rb:

def show
  @person = User.where(:login => params[:login]).first
end

, отредактированный после дополнительной информации исправленная ошибка

0 голосов
/ 03 марта 2011

Я использую драгоценный камень friendly_ID для такого рода вещей - это очень просто - удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...