Rails重命名路由

时间:2013-06-04 19:49:14

标签: ruby-on-rails ruby

我正在尝试为我的rails应用重命名我的电子邮件输入的路由。目前,当有人输入他们的电子邮件时,它会将它们路由到/:controller /:id 我想这样做,一旦他们输入他们的电子邮件,它就不会显示他们的ID,所以他们无法更改身份证号码并查看其他人的电子邮件。

2 个答案:

答案 0 :(得分:0)

修改

我正在尝试自己,如果它是一封电子邮件,这不会起作用,但如果您使用没有特殊字符的用户名进行尝试,它将正常工作!

尝试这样的事情:

路线:

match "/controller/:username" => "controller#show"

控制器:

def show
  @user = find_by_username(params[:username])
end

答案 1 :(得分:0)

我认为,使用带有一些字母数字的固定链接可以从另一个字母提供安全的电子邮件。假设你有人模特。

您只需要向people添加一个属性,属性名称为permalink

尝试运行

rails g migration add_permalink_to_peoples permalink:string
rake db:migrate

people.rb上,使用before_save

class People < ActiveRecord::Base
  attr_accessible :email, :permalink
  before_save :make_it_permalink

 def make_it_permalink
   # this can create permalink with random 8 digit alphanumeric
  self.permalink = SecureRandom.base64(8)
 end

end

您的routes.rb

match "/people/:permalink" => 'peoples#show', :as => "show_people"

on peoples_controller.rb

def show
  @people = People.find_by_permalink(params[:permalink])
end

运行rails server并添加一个人。

人们有一个独特的永久链接,随机的8位数字母数字(例如/people/:permalink

示例:http://localhost:3000/people/9sd98asj