使用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
链接到http://localhost:3000/people/2
,并在用户帖子中使用以下代码示例:
<a href="<%= person_path(@post.user.id) %>"><%=h @post.user_name %></a>
我希望网址为http://localhost:3000/people/victor
,其中victor
是用户的login
。此网址还应实际显示show.html.erb
控制器中的个人资料people
。
我还需要做什么?谢谢!
答案 0 :(得分:0)
我使用friendly_ID宝石来做这类事情 - 这很简单 - 祝你好运
答案 1 :(得分:0)
我会修改routes.rb,如下所示:
match 'people/:login' => 'people#show', :as => 'login'
然后修改people_controller.rb:
def show
@person = User.where(:login => params[:login]).first
end
在追加信息后编辑
更正错误