2013-06-04 189 views
-1

我想重命名我的Rails應用程序的電子郵件輸入的路由。目前,當有人輸入他們的電子郵件時,它將它們路由到/:controller /:id 我想這樣做,使得一旦他們輸入了他們的電子郵件,它就不會顯示他們的ID,因此他們不能更改ID號並查看其他人的電子郵件。Rails重命名路由

+0

「當有人輸入自己的電子郵件」 - >輸入在哪裏?你爲什麼不簡單地添加'before_filter'來限制它。 – kiddorails

回答

0

編輯:

我是想我的自我,這不到風度如果電子郵件的作品,但如果你有一個用戶名,沒有特殊carracters嘗試它會正常工作!

嘗試這樣:

路線:

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

控制器:

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

我試過了,但是當他們輸入他們的電子郵件時,他們被路由到/ emailinputs /:id –

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" 

peoples_controller.rb

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

運行rails server,並添加一個人。

人與隨機8位字母數字的唯一永久鏈接(例如/people/:permalink

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