ruby on rails выберите помощника формы Проверка нулевых значений - PullRequest
0 голосов
/ 19 августа 2010

У меня есть таблица клиента (с полями id, name) и таблица проекта (с полями id, name, client_id).

Модель моего проекта:

class Project < ActiveRecord::Base
  belongs_to :client
end

Мне нужно отобразить в одном списке выбора имя клиента и имя проекта.
В следующем коде все работает хорошо , и я получаю в списке выбора имя клиента, объединенное с именем проекта (например: IBM PROJECT_DEMO)

 select('hour','project_id',
        @projects.collect{ |project|
          [project.client.name+project.name,project.id]})

Проблема начинается, когда у меня есть проект без клиента , в этом случае я получаю ошибку

undefined method `name' for nil:NilClass

Я попытался вставить оператор if, чтобы проверить существование имени клиента как это

select('hour','project_id',
       @projects.collect{ |project|
         [project.client.name if project.client+project.name,project.id]},
       {:prompt => 'Select Project'})

но это не работает, и я получаю ошибку

Я буду очень признателен, если кто-нибудь может дать мне какое-то решение этой проблемы

Спасибо

1 Ответ

1 голос
/ 19 августа 2010

У вас должна быть проверка, чтобы имя не могло быть ноль

validates_presence_of :name

или иметь значение по умолчанию, поэтому оно всегда не

change_column :projects, :name, :string, :default => "Sam"

но если вы просто хотите, чтобы это работало, вы можете сделать это

select('hour','project_id', @projects.collect{|p|["#{p.client.name if !p.client.blank?}", p.id]})

Не имеет значения, если имя ноль, потому что вы можете назвать ноль, но вы не можете позвонить nil.attribute, и поэтому мое решение не сработало в первом раунде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...