Say*_*nee 6 routing ruby-on-rails-3
如何修改路由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
Run Code Online (Sandbox Code Playgroud)
我的routes.rb档案:
resources :profiles
Run Code Online (Sandbox Code Playgroud)
我已经看过类似的答案处理to_param,设计或嵌套循环甚至Rails 2.3中的一个例子,但我找不到一种有效的方法.
我应该做什么改变profile/view/show.html.erb,routes.rb以及model/profile.rb(如果有的话)修改路由http://localhost:3000/profiles/1到http://localhost:3000/username?我正在学习基础知识,因此我宁愿不使用任何宝石或插件.
小智 5
如果你想使用用户名而不是ID,请尝试使用friendly_id gem.
如果你想自己做,最简单的方法是在模型中覆盖方法to_param返回用户名,然后用你的用户名在你的控制器中搜索.
在模型中:
def to_param
username
end
Run Code Online (Sandbox Code Playgroud)
在控制器中:
def show
@user = User.find_by_username(params[:id])
end
Run Code Online (Sandbox Code Playgroud)
在routes.rb文件中:
match '/:id' => 'profiles#show'
Run Code Online (Sandbox Code Playgroud)