2011-03-03 58 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