Ich bin ein Neuling und habe viele Beiträge und Tutorials Railscast gesucht und kann immer noch nicht, um diesen Verband DingRuby on Rails -. Verband Ausgabe :(
Ich habe 2 Modelle, ein Hotel (mit dem Gerüst erstellt) und Einrichtung:
Der Punkt besteht darin, einem Hotel eine Einrichtung zuzuordnen, aber da meine Einrichtungstabelle alle Spalten mit booleschem Typ hat), würde eine Zeile in dieser Tabelle für ein Hotel ausreichen.
Die Sache ist, ich kann es nicht zu zeigen, und speichern/bearbeiten/aktualisieren de facilities. Ich habe eine hotel_id-Spalte erstellt, als ich die Modelleinrichtung erstellt habe. Mein Code ist:
Modelle:
class Facility < ActiveRecord::Base
belongs_to :hotel
attr_accessible :concierge, :hotel_id, :room24h
end
class Hotel < ActiveRecord::Base
has_one :facility, :dependent => :destroy
accepts_nested_attributes_for :facility, :allow_destroy => true
attr_accessible :name, :rating, :recommended, :facility_attributes
end
Meine Form in der Ansicht ist:
<%= form_for(@hotel) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :rating %><br />
<%= f.number_field :rating %>
</div>
<div class="field">
<%= f.label :recommended %><br />
<%= f.check_box :recommended %>
</div>
<br />
Hotel Facilities
<%= f.fields_for :facility do |facility_fields| %>
<div class="field">
<%= facility_fields.label :room24h, "24h Room Service:" %>
<%= facility_fields.check_box :room24h %>
</div>
<div class="field">
<%= facility_fields.label "Concierge:" %>
<%= facility_fields.check_box :concierge %>
</div>
<%end%>
<div class="actions">
<%= f.submit %>
</div>
<%end%>
Wie für Controller, ist der hotels_controller das gleiche wie wenn Sie hatte gerade Gerüstbau gemacht und mein facilities_controller ist leer.
Es ist nun die Einrichtungen in der Form zeigt, aber wenn ich auf "Erstellen" und es macht geltend, die ich erhalten:
"Can't mass-assign protected attributes: @hotel"
und
app/controllers/hotels_controller.rb:46:in `new'
app/controllers/hotels_controller.rb:46:in `create'
wie für Parameter Eingang:
{"hotel"=>{"rating"=>"1",
"name"=>"aaa",
"recommended"=>"0",
"@hotel"=>{"room24h"=>"1",
"concierge"=>"1"}},
"commit"=>"Create Hotel",
"utf8"=>"✓",
"authenticity_token"=>"YU7KEJ8qz0iQcXPGkLP6BSJn7JL6df1HvuS5JnjK2eU="}
Irgendwelche Ideen? Was fehlt in den Controllern? Vielen Dank im Voraus wieder
versuchen Sie '<% = f.fields_for @ hotel.facility do | facility_fields | %> ' – klump
Gibt es einen Grund, warum du Street English schreibst? de = die? – Jonathan
Fügen Sie den Controllercode hinzu, der ein neues Hotel zu Ihrer Frage erstellt oder speichert. Die Antwort von @Amar ist eine gute Vermutung, aber ohne Ihren Controller-Code ist es nur eine Vermutung. – mliebelt