2012-02-28 58 views
2

在rails中,我有這個複選框標記,其中如果元素包含在post數組中,那麼checked值應該爲true。如何簡化這個嵌套參數包括檢查?

- checked = (params[:comments] && params[:comments][:pictures] && params[:comments][:pictures].include?(comment.id)) 
=check_box_tag "comments[pictures][]", comment.id, checked 

被選中的部分看起來非常難看。如果捕獲錯誤,如果params [:comments]或params [:comments] [:pictures]未設置?我試過

- checked = (params[:comments][:pictures].include?(comment.id)) || false 

但它不起作用。

回答

3

我會建議你安裝simple_form和使用:

= simple_form_for @comment do |f| 
    = f.association :pictures, :as => 'boolean' 
0

你可以在默認值的散列合併,然後你肯定有一個PARAMS [:評論] [:圖片]值(在這種情況下空數組):

params = {:comments => {:pictures => []}}.merge(params) 
checked = params[:comments][:pictures].include?(comment.id) 
+0

BTW這是代碼我的頭頂部,請藉口錯別字或語法錯誤 - 檢查API的使用.merge,以確保我得到了它周圍的正確方法; - ) – Pavling 2012-02-28 11:33:25