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