2016-08-15 2 views
0

Ich habe ein Modell namens Trl und ein Modell namens Project. Die Verbände sind:Schienen 4 - Starke Parameter - zugeordnetes Attribut

Projekt

belongs_to :Trl 

Trl

has_many :projects 

In meinen Projekten Form, ich Benutzer bitten, eine Trl zu wählen, hat die Projekte Form:

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

That teilweise hat:

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

Wenn ich das alles sparen und versuchen, es zu verwenden, erhalte ich einen Fehler, der sagt:

undefined method `title' for nil:NilClass 

ich bin nicht sicher, ob ich trl_attribute enthalten müssen [: title] in meinen Projekten Controller stark params. Der Benutzer, der das Formular ausfüllt, kann keinen Titel erstellen, er kann nur einen aus einer Liste auswählen, die bereits erstellt wurde.

Muss dieser Kontext in starken Parametern enthalten sein?

Antwort

0

Ja, Sie müssen es in die Liste der weißen Parameter aufnehmen. Hier ist Ihr Fehler in Bezug auf Nil-Objekt, zuerst müssen Sie es lösen.

Try this:

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

Dann ist es in strong parameters Liste enthalten.

+0

Muss ich dem Projekt-Controller noch etwas hinzufügen, damit das funktioniert? Wenn ich dies in der Konsole einstelle, funktioniert es. Ich kann es nicht von seiner Form machen. – Mel

+0

Erhalten Sie Aufzeichnungen von Trl on Rails Konsole? –

+0

Ja - ich kann es über die Konsole hinzufügen und überprüfen, aber ich erhalte einen Fehler in der HTML-Ansicht – Mel

Verwandte Themen