2016-08-15 1 views
0

У меня есть модель Trl и модель под названием Project. Ассоциации являются:Rails 4 - Сильные параметры - связанный атрибут

Проект

belongs_to :Trl 

Trl

has_many :projects 

В моей форме проектов, я прошу пользователей выбрать TRL, форма проектов:

<%= render partial: 'trls/project', locals: { f: f } %> 

Это частично:

<%= f.input :trl, label: false do %> 
    <%= f.select :trl, Trl.all.map { |t| [t.title, t.id] }, 
          include_blank: false, 
          prompt: 'Select one' %> 

Когда я сохраняю все это и попытаться использовать его, я получаю сообщение об ошибке, которое говорит:

undefined method `title' for nil:NilClass 

Я не уверен, нужно ли мне включать trl_attribute [: название] в моем контроллере проектов сильного Титулы. Пользователь, заполняющий форму, не может создать заголовок, он может просто выбрать один из списка, который уже был создан.

Должен ли этот контекст быть включен в сильные параметры?

ответ

0

Да, вы должны включить его в список белых параметров. Здесь ваша ошибка касается объекта Nil, сначала вам нужно его решить.

Попробуйте это:

<%= f.select :trl, Trl.all.map { |t| [t.try(:title), t.try(:id)] }, include_blank: false, prompt: 'Select one' %> 

Затем включите его в strong parameters список.

+0

Нужно ли добавить что-нибудь еще к контроллеру проекта, чтобы это работало? Если я установил это в консоли, он будет работать. Я не могу сделать это из формы. – Mel

+0

Вы получаете записи от Trl на консоли rails? –

+0

Да - я могу добавить и проверить его с консоли, но я получаю сообщение об ошибке в представлении html – Mel