Ich versuche CarrierWave zu verwenden, um Benutzer zu ermöglichen, Bilder zu. Im Moment versuche ich einfach das Bild nach dem Upload anzuzeigen, aber nachdem ich den Submit Button gedrückt habe, bekomme ich die 'undefinierte lokale Variable oder Methode' image 'für # < # < Klasse: 0x007f2179a53d30>: 0x007f2174b50238>' Fehler im Titel angezeigt .Ruby on Rails - Nameerror in Bildern # zeigen, nicht definieren lokale Variable oder Methode `Bild‘ für # <# <Klasse: 0x007f2179a53d30>: 0x007f2174b50238>
Hier ist mein images_controller:
class ImagesController < ApplicationController
def new
@image = Image.new
end
def create
@image = Image.new
if @image.save
redirect_to @image
end
end
def show
end
end
und mein image.rb (Modell):
new.html.erb (das Upload-Formular):
<%= form_for @image, html: { multipart: true } do |f| %>
<% if @image.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@image.errors.count, "error") %> prohibited this image from being saved:</h2>
<ul>
<% @image.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :image %><br>
<%= f.file_field :image %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
zeigen .html.erb (die Seite, die den Fehler verursacht):
<%= image_tag image.image_url %>
Und um zu zeigen, dass die ‚Bild‘ Spalte in meinem schema.rb vorhanden ist:
ActiveRecord::Schema.define(version: 20160319135740) do
create_table "images", force: :cascade do |t|
t.string "image"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
Ehrlich gesagt habe ich keine Ahnung, was das Problem sein könnte. Laut jedem Tutorial, das ich gelesen habe, sollte image_url funktionieren, aber es findet die Methode nicht.
Kann mir jemand helfen?
wo Sie Bild gespeichert werden? Sie erstellen nur neue Instanz @ Image = Image.new – LHH
Ich habe @ Image.Save in meinem Controller –
sind Sie Bilder lokal oder s3? – LHH