× 說心事 政治時事 生活 運動 汽車 機車 自行車 相機 科技 理財 旅遊美食 娛樂 健康 美麗時尚 人際關係 文學故事 關於《思書》
吃喝玩樂 關於《思書》


Rails 怎麼檢查 Params 存不存在?


紅寶鐵軌客
來關注...
關注/停止關注:紅寶鐵軌客
關注有什麼好處?:當作者有新文章發佈時,「思書」就會自動通知您,讓您更容易與作者互動。
×
現在就加入《思書》,你就可以關注本作者了!
《思書》是一個每個人的寫作與論壇平台,特有的隱私管理,讓你寫作不再受限,討論更深入真實,而且免費。 趕快來試試!
還未加入《思書》? 現在就登錄! 已經加入《思書》── 登入
Rails 使用中,折磨中,享受中......
2017/11/27
107   0  


params.has_key?()

我用過各種方法,params[:one].blank? 或是 params[:one].present? 這兩個可能是最常用的,也用了很久了,其實也沒有很大的問題,但是我現在改用

params.has_key?(:one) 

為什麼?幾個問題,但主要是一些模糊地帶,如:

  • "".blank?  # = true
  • " ".blank? # = true

所以如果 params[:one]="",這一定會被認成 blank,一般來說,不會有空白這樣的 params,但是萬一真的發生,總是麻煩,進一步,如果要百分百確定,我現在是用以下的做法:

if params.has_key?(:one) && params[:one].to_i != 0

運用 Ruby 的先來後到,先確定有這的 params,在確定這個 params 的值是正確的,這樣就萬無一失了。

Params 還有一些很酷炫的寫法,

params.dig
params = ActionController::Parameters.new(foo: { bar: { baz: 1 } })
params.dig(:foo, :bar, :baz) # => 1
params.dig(:foo, :zot, :xyz) # => nil

params2 = ActionController::Parameters.new(foo: [10, 11, 12])
params2.dig(:foo, 1) # => 11

用 Dig 在 Rails 的 form_for 中,可以用 params.dig(:user, :name),去讀 user 的 name,好不好用,看人,但是很酷!

另一個也很酷,這就一定要用了:

present_in?

簡單好用的檢查 params

locale_options = [:en, :zh-TW] 
...

params[:locale].presence_in(locale_options) || :en

 

寫這篇是為了紀念我又忘記給 AJAX 中設定 locale params ⋯⋯ 


喜歡作者的文章嗎?馬上按「關注」,當作者發佈新文章時,思書™就會 email 通知您。

思書是公開的寫作平台,創新的多筆名寫作方式,能用不同的筆名探索不同的寫作內容,無限寫作創意,如果您喜歡寫作分享,一定要來試試! 《 加入思書》

思書™是自由寫作平台,本文為作者的個人立場與意見。
關於作者

很久以前就是個「寫程式的」,其實,什麼程式都不熟⋯⋯
就,這會一點點,那會一點點⋯⋯



標籤: present_in? x 1 dig x 1 has_key? x 1 params x 1 rails x 34

分享:



參與討論!
×
現在就加入《思書》,馬上參與討論!
《思書》是一個每個人的寫作與論壇平台,特有的隱私管理,用筆名來區隔你討論內容,讓你的討論更深入,而且免費。 趕快來試試!
還未加入《思書》? 現在就登錄! 已經加入《思書》── 登入