ActiveRecord::UnknownAttributeError
Je suis en train de créer hôtel avec certains champs, l'un des champs est de la photo, je veux utiliser plusieurs fichiers à télécharger avec carrierwave et nested_form. J'ai trouvé ce l'article
et avoir un résultat.
Quand je suis sur /hotels/nouvelle, en remplissant les champs, le choix des photos
et appuyez sur soumettre, se ActiveRecord::UnknownAttributeError dans HotelsController#créer attribut inconnu: attachable_type.
Console
Started POST "/hotels" for 127.0.0.1 at 2013-09-27 17:35:18 +0300
Processing by HotelsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"+1T2tuygSnj8unOKkXkRWI4L7KvDE
9PPHrqvag7KmIQ=", "hotel"=>{"title"=>"dsa", "address"=>"asd", "star_rating"=>"2"
, "breakfast"=>"Not include", "price_for_room"=>"sadas", "room_description"=>"Gr
eat room", "attachments_attributes"=>{"1380289954031"=>{"file"=>#<ActionDispatch
::Http::UploadedFile:0xa5d546c @original_filename="11374.jpg", @content_type="im
age/jpeg", @headers="Content-Disposition: form-data; name=\"hotel[attachments_at
tributes][1380289954031][file]\"; filename=\"11374.jpg\"\r\nContent-Type: image/
jpeg\r\n", @tempfile=#<File:/tmp/RackMultipart20130927-7077-50zkol>>, "_destroy"
=>"false"}, "1380289972216"=>{"file"=>#<ActionDispatch::Http::UploadedFile:0xa5d
53a4 @original_filename="357175.jpg", @content_type="image/jpeg", @headers="Cont
ent-Disposition: form-data; name=\"hotel[attachments_attributes][1380289972216][
file]\"; filename=\"357175.jpg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<F
ile:/tmp/RackMultipart20130927-7077-dlkmwk>>, "_destroy"=>"false"}}}, "commit"=>
"Done"}
Completed 500 Internal Server Error in 109ms
ActiveRecord::UnknownAttributeError (unknown attribute: attachable_type):
app/controllers/hotels_controller.rb:15:in `new'
app/controllers/hotels_controller.rb:15:in `create'
...
Modèle de l'hôtel.rb
class Hotel < ActiveRecord::Base
attr_accessible :address, :breakfast, :price_for_room, :room_description,
:star_rating, :title, :attachments_attributes
has_many :attachments, :as => :attachable
accepts_nested_attributes_for :attachments
end
Modèle de pièce jointe.rb
class Attachment < ActiveRecord::Base
attr_accessible :file
belongs_to :attachable, :polymorphic => true
mount_uploader :file, FileUploader
end
hotels_controller.rb
...
def new
@hotel = Hotel.new
end
def create
@hotel = Hotel.new(params[:hotel])
if @hotel.save
redirect_to hotels_path, notice: "Nice, you added new hotel " + @hotel.title
else
render "new"
end
end
_form.rb
<%= nested_form_for @hotel, :html => {:multipart => true} do |f| %>
...
<%= f.fields_for :attachments do |attachment_form|%>
<%= attachment_form.label :file %>
<%= attachment_form.file_field :file %>
<%= attachment_form.link_to_remove "Remove this photo" %>
<% end %>
<%= f.link_to_add "Add photo", :attachments %>
<%= f.submit 'Done', class: 'btn btn-success' %>
<% end %>
Toutes les idées, les gars? Ce que je fais mal?
OriginalL'auteur yozzz | 2013-09-27
Vous devez vous connecter pour publier un commentaire.
ActiveRecord::UnknownAttributeError signifie que vous êtes absent un champ dans la base de données. Semble que vous avez manqué un champ lors de la configuration de votre polymorphes relation, ou vous avez oublié d'exécuter les migrations.
Voir aussi: http://guides.rubyonrails.org/association_basics.html#polymorphic-associations
OriginalL'auteur Taavo
essayez de créer un fichier de noms
app/téléchargements/photo_uploader.rb
ensuite dans votre modèle à ajouter
vous avez probablement ce
/config/initializers/carrierwave.rb
Qu'est-ce que carrierwave.rb fichier, que fait-il?
/config/initializers/carrierwave.rb il conects à AWS pour stocker les fichiers, vous pouvez remplacer
ENV['CARRIER_WAVE_ACCESS_KEY']
avec vos valeurs pour vous connecterOriginalL'auteur MZaragoza