2011-03-03 56 views
1

使用RoR 2.3.8。我有以下代碼:用戶名Rails的用戶

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 

我在Users數據庫,在那裏唯一的用戶名是列loginPeople只是一個控制器來顯示用戶創建的一些帖子。

我通常會用下面的代碼示例鏈接到index.html.erb下我people控制器與URL http://localhost:3000/people/2在用戶發表的帖子:

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

我想要的網址是http://localhost:3000/people/victor其中victorlogin爲用戶。該網址實際上還應該顯示people控制器中的配置文件show.html.erb

我還需要做什麼?謝謝!

回答

0

我將修改routes.rb中,這樣的事情:

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

然後修改people_controller.rb :

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

編輯後的附加信息
已更正的錯誤

+0

user_name僅在用戶的帖子中使用。 Post.rb – Victor 2011-03-03 09:05:02

+0

@Victor - 所以用戶模型中也有一個登錄字段,對吧?我將修復代碼然後 – 2011-03-03 09:12:28

+0

@Nikita - 我使用了這個'map.person'/:login',:controller =>'people',:action =>'show'',因爲我使用Rails 2.3.8。我得到了這個問題:'找不到沒有ID的用戶' – Victor 2011-03-03 13:46:42