如何修改从http://localhost:3000/profiles/1
到http://localhost:3000/myusername
的路由?
我有一个配置文件模型,包含下表:
def self.up
create_table :profiles do |t|
t.string :username
t.text :interest
t.timestamps
end
end
我的routes.rb
文件:
resources :profiles
我查看了与to_param,devise或nested loop甚至an example in Rails 2.3相关的类似答案,但我找不到合适的方式。
我应该对profile/view/show.html.erb
,routes.rb
和model/profile.rb
(如果有)进行哪些更改,以修改从http://localhost:3000/profiles/1
到http://localhost:3000/username
的路由?我正在学习基础知识,因此我宁愿不使用任何宝石或插件。
答案 0 :(得分:5)
如果您想使用用户名而不是ID,请尝试friendly_id gem。
如果您想自己动手,最简单的方法是在模型中覆盖方法to_param以返回用户名,然后在用户名中搜索您的控制器。
模特:
def to_param
username
end
在控制器中:
def show
@user = User.find_by_username(params[:id])
end
在routes.rb文件中:
match '/:id' => 'profiles#show'
答案 1 :(得分:1)