Rails 2.3.8 및 friendly_id 사용.username이 포함 된 사용자 URL을 구성하지만 모델 연관이 없음
사람 모델 :
class Person < ActiveRecord::Base
# Nice URL's in Rails.
def to_param
"#{login.downcase.gsub(/[^[:alnum:]]/,'-')}".gsub(/-{2,}/,'-')
end
end
사람들 컨트롤러 (제거)
class PeopleController < ApplicationController
def show
@person = User.find(params[:id])
if current_user == @person
@shops = @person.shops.paginate(:page => params[:page], :order => order)
else
@shops = @person.shops.by_status('published').paginate(:page => params[:page], :order => order)
end
end
end
사용자 모델 :
이class User < ActiveRecord::Base
extend ActiveSupport::Memoizable
acts_as_authentic do |c|
c.validate_email_field = false
c.validate_login_field = false
end
attr_accessible :login, :email, :password, :password_confirmation, :name, :location, :website,
:allow_follower, :allow_message, :allow_updates, :allow_newsletter, :avatar, :role, :remember_me
# Returns name or login if name is blank
def full_name
if self.name.blank?
login.strip
else
(self.name || '').strip
end
end
memoize :full_name
# Nice URL's in Rails.
def to_param
"#{login.downcase.gsub(/[^[:alnum:]]/,'-')}".gsub(/-{2,}/,'-')
end
end
People.rb
및 User.rb
의 to_param
정의가 작동하지 않습니다.
Users
아래의 모든 페이지는 사용자의 계정 설정 용이며 개인보기 용이므로 아무 것도 쓸 필요가 없습니다. 하지만 공중보기 용 사용자의 프로필로 표시 할 컨트롤러는 People
입니다.
people
URL은 현재 나는 그것을에서 스핑크스 검색을 수행해야하기 때문에 people
의 컨트롤러에 @person = User.find(params[:id])
을 파괴하지 않고 아직 http://abc.com/people/login-name-here
으로 설정하려면, http://abc.com/people/1
입니다.
달성하려면 어떻게해야합니까? 고맙습니다.