Rails / 3 - Рендеринг частичного на основе состояния переменной экземпляра? - PullRequest
1 голос
/ 30 июня 2010

Бороться с этим немного.У меня есть форма поиска с двумя параметрами, когда оба поля совпадают, она возвращает строку в @person:

Так что я хочу сделать, это сделать один частичный перед поиском, другой, если человек соответствует, и еще один, еслизапись не найдена.

Куда идет эта логика и что можно проверить?

def index
  if params[:id] && params[:dob]
    @person = Person.where("id = ? and dob = ?", params[:id], params[:dob]).first
  end
end

В моем index.html.haml

-if ! @person.nil
  =render :partial => 'found'
-elsif @person.nil
  =render :partial => 'not_found'
-else
  =render :partial => 'welcome'

Проблема в том, что @ person.nil?всегда верно, будет ли поиск выполнен или нет.У кого-нибудь есть идеи, что делать?Чего мне не хватает?

1 Ответ

1 голос
/ 30 июня 2010

Тем не менее, вы можете просто установить @person

def index
  if params[:id] && params[:dob]
    @person = Person.where("id = ? and dob = ?", params[:id], params[:dob])
  else
    @person = false
  end
end

Таким образом, у вас не будет проблем с нулем и проверкой, равен ли он нулю.

На ваш взгляд, вы можете просто проверить,@person имеет значение false или если размер больше нуля.

-if @person
  -if @person.size > 0
    =render :partial => 'found'
  -else
    =render :partial => 'not_found'
  -end
-else
  =render :partial => 'welcome'
-end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...