跳到主要內容

Rails 網址加密

終於試成功了,歷經了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
即可!!

留言

這個網誌中的熱門文章

collection view part6 swift

preselect collectionview https://stackoverflow.com/questions/45610785/how-to-preselect-and-highlight-a-cell-from-a-uicollectionview https://hackernoon.com/uicollectionviewcell-selection-made-easy-41dae148379d if collectionview allow multiple selection remeber add this, cell item could be Deselect collectionView. selectItem (at: indexPath, animated: true , scrollPosition: . top ) https://stackoverflow.com/questions/15330844/uicollectionview-select-and-deselect-issue save indexpath userdefault https://stackoverflow.com/questions/34804294/how-to-save-nsindexpath-locally https://stackoverflow.com/questions/37001643/how-to-add-nsindexpath-to-nsuserdefaults-in-swift navigation presneted viewcontroller dismiss https://stackoverflow.com/questions/31205002/why-is-it-bad-practice-to-have-a-viewcontroller-dismiss-itself indexpath comparison         if selectIndexPath . contains (indexPath) {             cell. isSelect...

collection view part3 swift

make random color for test, i put in cell background color watch diff https://stackoverflow.com/questions/29779128/how-to-make-a-random-color-with-swift because use CYlayer, i have to remove layer https://stackoverflow.com/questions/10789766/remove-all-sublayers-from-a-view https://stackoverflow.com/questions/37581951/ios-how-to-remove-previously-added-sublayers-of-a-uiview/37581988 alpha gradint with imageview https://stackoverflow.com/questions/11807876/transparent-alpha-gradient-with-core-graphic-iphone swift map and flatmap http://swiftcafe.io/2016/03/28/about-map/ get local date and time https://stackoverflow.com/questions/28404154/swift-get-local-date-and-time swift dictionary basic https://stackoverflow.com/questions/27313242/how-to-append-elements-into-dictionary-in-swift add 1 day to NSDate https://stackoverflow.com/questions/5067785/how-do-i-add-1-day-to-an-nsdate get keys from dictionay https://stackoverflow.com/questions/26386093/array-from-dictionary...

js30 d27 drag跑馬燈

https://github.com/richardhsieh18/js30/tree/master/course27 CSS transform: scale(0.98);  =>  transform: scale(1); js     isDown = true;     slider.classList.add('active');     startX = e.pageX - slider.offsetLeft;     scrollLeft = slider.scrollLeft;   });     if(!isDown) return; //stop the function from running     e.preventDefault();     const x = e.pageX - slider.offsetLeft;     const walk = (x - startX) * 3;     slider.scrollLeft = scrollLeft - walk;   });