2017-06-05 36 views

回答

4

我想這取決於你想要的行爲。

params = ActionController::Parameters.new 
params.fetch(:person) 

會引發錯誤。正如文檔中所反映的,如果您願意,您可以使用fetch指定更多行爲。

params = ActionController::Parameters.new 
params[:person] 

將返回nil

+1

應該加上你可以'params.fetch(:person,「」)'來避免錯誤。 'fetch'是更好的IMO,因爲如果你試圖獲得的那個不存在,你可以決定返回的值。 – Iceman

+1

@Iceman很棒!我將考慮朝着這個方向發展,因爲在價值缺失時明確表達一個人想要的行爲似乎是一個非常好的主意。 – jvillian

1

爲什麼你必須使用Rails params的fetch?

你不知道。您正在查看的documentation for fetch method。當然,它在任何地方都使用fetch。還有​​:

params = ActionController::Parameters.new(person: { name: "Francesco" }) 
params[:person] # => <ActionController::Parameters {"name"=>"Francesco"} permitted: false> 
params[:none] # => nil 
+0

好,那麼'[]'和'fetch'方法有什麼不同?根據@ jvillian,似乎後者可以拋出一個錯誤,而前者將默默返回零? – stackjlei

+1

如果您提供第二個參數作爲默認值,那麼'fetch'不會引發錯誤@stackjlei – Iceman

相關問題