如何简化这个嵌套的参数包括检查?

时间:2012-02-28 09:06:28

标签: ruby-on-rails ruby

在rails中,我有这个checkbox标签,如果一个元素包含在post数组中,那么check值应为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

但它不起作用。

2 个答案:

答案 0 :(得分:3)

我建议您安装simple_form并使用:

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

答案 1 :(得分:0)

您可以合并默认值的哈希值,然后您确定有一个参数[:comments] [:pictures]值(在此实例中为空数组):

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