Je veux télécharger une image à mon localhost en utilisant bijou « carrierwave », j'ai contrôleur de la peinture et des galeries comme ci-dessous le codeimages téléchargement catifs rails et erreur se
contrôleur de peinture
class PaintingsController < ApplicationController
def index
@paintings=Painting.all
end
def new
@painting=Painting.new
end
def show
@painting=Painting.find(params[:id])
end
def create
#byebug
@painting=Painting.new(painting_params)
if @painting.save
flash[:success]="Created image in album"
redirect_to gallery_path(@painting)
else
flash[:error]="Fail!"
render 'new'
end
end
private
def painting_params
params.require(:painting).permit(:name,:gallery_id)
end
end
contrôleur Galerie
class GalleriesController < ApplicationController
def index
@galleries=Gallery.all
end
def new
@gallery=Gallery.new
end
def show
@gallery=Gallery.find(params[:id])
end
def create
@gallery=Gallery.create!(gallery_params)
redirect_to galleries_path
end
private
def gallery_params
params.require(:gallery).permit(:name)
end
end
ok puis 2 fichiers modèle: gallery.rb
class Gallery < ApplicationRecord
has_many :paintings
end
painting.rb
class Painting < ApplicationRecord
def access_params
params.require(:painting).permit(:gallery_id, :name, :image)
end
belongs_to :gallery, optional: true
mount_uploader :image, ImageUploader
end
Il semble everying va bien, mais je coincé à l'étape montrant l'image sur show.html.erb dans la galerie. show.html.erb
<div id="paintings">
<% @gallery.paintings.each do |painting| %>
<div class="painting">
<%= image_tag painting.image_url.to_s %>
<div class="name"><%= painting.name %></div>
<div class="actions">
<%= link_to "edit", edit_painting_path(painting) %> |
<%= link_to "remove", painting, :confirm => 'Are you sure?', :method => :delete %>
</div>
</div>
<% end %>
<div class="clear"></div>
</div>
l'image ne montre en flash althought dans le contrôleur de galerie a rapporté que j'ai créé l'image, je visitai le site alors j'ai essayé s'attributes impression de peinture sur l'exposition .html.erb
<%= @gallery.name %>
<%= @gallery.paintings.name %>
<%= @gallery.paintings.gallery_id%>
<%= @gallery.paintings.image%>
Seuls le nom de la galerie et le nom de la peinture sont imprimés. deux autres méthodes a une erreur se produire.
undefined method `gallery_id' for #<ActiveRecord::Associations::CollectionProxy []>
Je ne sais pas pourquoi la galerie ne peut accéder au nom de la peinture, mais pas d'autres two.I cherché cette erreur, mais je ne pense pas que les cas appliquer à la mienne. Quel est le problème les gars?