終於試成功了,歷經了5個小時的奮鬥,不過加密通常只用來用在安全網頁上,要不然對SEO我想是沒有幫助的。
首先先新增routes
get 'post/:id', :to => 'posts#find_by_date'
resources :posts
覆蓋掉原來會指向的action
再來要去index.html.erb把link_to改成手動指向action
原本這樣
<%= link_to post.title, post %>
改成這樣
<%= link_to post.title, controller: "posts", action: "find_by_date", id: post %>
再來...去先model 改post.rb
新增params加密由於是用id可以在後面加上字串當key
def to_param
Base64.urlsafe_encode64((self.id).to_s + "lzIGxpbmUgdHdvClRoaXMga")
end
出來後id就會像 "OWx6SUd4cGJtVWdkSGR2Q2xSb2FYTWdhWE1nYkdsdQ=="
網址會變這樣http://localhost:3000/post/OWx6SUd4cGJtVWdkSGR2Q2xSb2FYTWdhWE1nYkdsdQ==
再來去controller新增#find_my_date
要記得
require 'base64'
def find_by_date
@post = Post.find((Base64.urlsafe_decode64(params[:id])).gsub("lzIGxpbmUgdHdvClRoaXMga",""))
end
最後新增個find_by_date.html.erb
即可!!
首先先新增routes
get 'post/:id', :to => 'posts#find_by_date'
resources :posts
覆蓋掉原來會指向的action
再來要去index.html.erb把link_to改成手動指向action
原本這樣
<%= link_to post.title, post %>
改成這樣
<%= link_to post.title, controller: "posts", action: "find_by_date", id: post %>
再來...去先model 改post.rb
新增params加密由於是用id可以在後面加上字串當key
def to_param
Base64.urlsafe_encode64((self.id).to_s + "lzIGxpbmUgdHdvClRoaXMga")
end
出來後id就會像 "OWx6SUd4cGJtVWdkSGR2Q2xSb2FYTWdhWE1nYkdsdQ=="
網址會變這樣http://localhost:3000/post/OWx6SUd4cGJtVWdkSGR2Q2xSb2FYTWdhWE1nYkdsdQ==
再來去controller新增#find_my_date
要記得
require 'base64'
def find_by_date
@post = Post.find((Base64.urlsafe_decode64(params[:id])).gsub("lzIGxpbmUgdHdvClRoaXMga",""))
end
最後新增個find_by_date.html.erb
即可!!

留言
張貼留言