Как мне пропустить кусок кода, если в Rails объект имеет значение nil? - PullRequest
1 голос
/ 11 июля 2011

У меня есть фрагмент кода, который включает или отключает списки выбора при нажатии на соответствующий флажок, однако, если они все отключены в сообщении, он не отправит их в список параметров. Поэтому мне нужно выполнять код, только если они существуют.

Я использовал:

if params[:id][:id2].nil?

и

if params[:id][:id2].blank?

также

if params[:id][:id2].empty?

не говоря уже просто:

if params[:id][:id2]

И все выдают одну и ту же ошибку ... "У вас есть нулевой объект, которого вы не ожидали". Как я могу исправить эту ошибку?

Ответы [ 2 ]

7 голосов
/ 11 июля 2011

Возможно params[:id] ноль, проверьте params[:id].nil?.

РЕДАКТИРОВАТЬ: Комментарии ниже правильно утверждают, что blank? лучше, если вы пытаетесь оценить против либо nil? или empty?.

0 голосов
/ 11 июля 2011

Между тем

class Object
  def unless_nil(default = nil, &block)
    if nil?
      default
    else
      block[self]
    end
  end
end

допускает такие вещи, как:

id2 = params[:id].unless_nil { |p_id| p_id[:id2] }
id2, id3 = params[:id].unless_nil([0, 0]) { |p_id| [p_id[:id2], p_id[:id3]] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...