2012-11-29 4 views
0

J'ai réussi à mettre en place un téléchargement d'image avec la gemme carrierwave.rails carrierwave erreur gem

mais lorsque je tente d'ajouter une option en ligne URL comme ceci:

<%= form_for @rating, :html => {:multipart=>true} do |f| %> 

    <div class="field"> 
     <%= f.file_field :pic_url %> 
    </div> 

    <div class="field"> 
     <%= f.label :remote_pic_url_url, 'or image url' %> 
     <br/> 
     <%= f.text_field :remote_pic_url_url %> 
    </div> 

    <div class="actions"> 
     <%= f.submit 'Upload Picture', :class => 'btn btn-primary' %> 
    </div> 
<% end %> 

puis-je obtenir cette erreur:

Can't mass-assign protected attributes: 

mon modèle est

class Rating < ActiveRecord::Base 
    attr_accessible :pic_url, :rating 

    mount_uploader :pic_url , ImageUploader 
end 

Répondre

1

Vous devez pouvoir attribuer en masse l'attribut remote_pic_url_url:

class Rating < ActiveRecord::Base 
    attr_accessible :pic_url, :remote_pic_url_url, :rating 

    mount_uploader :pic_url , ImageUploader 
end 
+0

??, je suis nouveau sur les rails, qu'est-ce que cela signifie? J'étais sous l'impression que remote_ {columnName} _url est la convention pour ajouter un champ d'URL supplémentaire dans 'carrierwave' – WebQube

+0

Lorsque vous utilisez un formulaire pour créer (ou mettre à jour) un objet modèle, Rails ne vous autorisera pas à définir quelque chose qui n'est pas spécifié la liste blanche 'attr_accessible' (sauf si vous utilisez une méthode de liste noire comme' attr_protected'). Cela permet d'empêcher l'accès non autorisé aux attributs qui ne sont pas destinés à être modifiés via l'interface utilisateur. Donc tout champ dans le formulaire pour votre modèle, doit avoir une entrée correspondante dans la liste 'attr_accessible'. Voir [ici] (http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html) pour plus d'informations à ce sujet. – PinnyM

+0

merci, ça a marché – WebQube