2011-01-14 2 views
0

Ich habe den folgenden Code:Rails 3: Wie natürlichen Schlüssel Kind Modell auf Muttermodellform akzeptieren

# app/models/part.rb 
class Part < ActiveRecord::Base 
    has_many :lots 
    # attributes: id, number 
end 

#app/models/lot.rb 
class Lot < ActiveRecord::Base 
    belongs_to :part 
    # attributes: id, number, part_id, quantity 
end 

# app/views/lots/_form.html.erb 
... 
<p> 
    <%= f.label :number %><br /> 
    <%= f.text_field :number %> 
</p> 
<p> 
    <% f.fields_for :part do |p| %> 
    <%= p.label :number, 'Part' %><br /> 
    <%= p.text_field :number %> 
    <% end %> 
</p> 
<p> 
    <%= f.label :quantity %><br /> 
    <%= f.text_field :quantity %> 
</p> 
... 

Das Formular soll zu viel bearbeiten oder erstellen. Das Formular akzeptiert die Teilenummer eines vorhandenen Teils und speichert die part_id im Los. Die fields_for-Gruppe wird nicht für mich gerendert. Ich bin sicher, das ist einfach. Was hier vor sich geht ist, dass die Teilenummer ein natürlicher Schlüssel ist, aber Rails Surrogatschlüssel verwendet. Ich hätte eine Auswahlliste verwenden können, aber ich muss Tastatureingabe akzeptieren. Ich werde eventuell Ajax für das Formular anschließen müssen. Was sind deine Gedanken?

Antwort

0

Sie verpassen gleich ein

<%= f.fields_for :part do |p| %>

In Rails anmelden 3, Helfer in der Regel Werte zurück, anstatt sie direkt auszudrucken. Verwenden Sie daher <% = statt <%

+0

Wenn das Formular gebucht wird, sollte ich eine Suche nach dem Teil auf der Grundlage der Teilenummer und die Zuweisung dieser an das Los-Modell und dann speichern? Oder gibt es etwas, mit dem ich die Modelle dekoriere, um das implizit zu tun? Das <% = -Tag arbeitete an dem Feld, das angezeigt werden soll, aber ich erhalte einen ActiveRecord :: AssociationTypeMismatch-Fehler, wenn ich das Formular poste. –

+0

Können Sie eine separate Frage posten und Ihre Steuerungslogik sowie alle relevanten Routen in config/routes.rb einbeziehen? –

+0

Es ist gerade Gerüstcode. Ich denke, dass die erneute Beantwortung dieser Frage Jeffs Gefühle für den Stack-Overflow verletzen wird. Mein ursprünglicher Fragenteil sollte einen Hinweis darauf geben, was ich hier zu tun versuche. Ich habe den obigen Code bereitgestellt, um zu demonstrieren, woran ich arbeite, und ich versuche das Gesamtkonzept der Verschaltung eines verschachtelten Feldes zu verstehen. –

Verwandte Themen