Я пытаюсь реализовать функцию загрузки снимков (без драгоценного камня), и когда я нажать представить после выбора фотографии я получаю эту ошибку:ActiveRecord :: UnknownAttributeError в PicturesController # создать
Ac
tiveRecord::UnknownAttributeError in PicturesController#create
unknown attribute 'picture' for Picture.
Extracted source (around line #13):
def create
# make a new picture with what picture_params returns (which is a method we're calling)
**@picture = Picture.new(picture_params)** << where i'm getting the error
if @picture.save
# if the save for the picture was successful, go to index.html.erb
redirect_to pictures_url
Как настроить среду, чтобы мои фотографии сохранялись в базе данных?
Контроллер:
class PicturesController < ApplicationController
def index
@pictures = Picture.all
end
def new
@picture = Picture.new
end
def create
# make a new picture with what picture_params returns (which is a method we're calling)
@picture = Picture.new(picture_params)
if @picture.save
# if the save for the picture was successful, go to index.html.erb
redirect_to pictures_url
else
# otherwise render the view associated with the action :new (i.e. new.html.erb)
render :new
end
end
def show
@picture = Picture.find(params[:id])
end
def edit
@picture = Picture.find(params[:id])
end
def update
@picture = Picture.find(params[:id])
if @picture.update_attributes(picture_params)
redirect_to "/pictures/#{@picture.id}"
else
render :edit
end
end
def destroy
@picture = Picture.find(params[:id])
@picture.destroy
redirect_to pictures_url
end
private
def picture_params
params.require(:picture).permit(:artist, :title, :url, :picture)
end
end
миграция:
class CreatePictures < ActiveRecord::Migration
def change
create_table :pictures do |t|
t.string :artist
t.string :title
t.string :url
t.string :pictures
t.timestamps null: false
end
end
end
Я добавил t.string: фотографии вручную путем редактирования файла, она до сих пор работает таким образом, или есть команда мне нужно запустить ?
Моя форма:
<container>
<center>
<%= form_for @picture do |f| %>
<input type="file" multiple> <%= f.file_field :picture %>
<p>Drag your files here or click in this area.</p>
<button type="submit"> <%= f.submit "Save" %> Upload </button>
</form>
<% end %>
</container>
Я использую простое перетаскивание загрузки. Спасибо за вашу помощь. Я очень ценю это!
Вы добавили файл миграции поддержки существующих. Эта миграция уже продвигается к производству или git? Если это так, вы не должны этого делать и вместо этого создавайте новую миграцию. Если это новая миграция (не нажата нигде - существует только локально), но она уже запущена, вам нужно запустить 'rake db: migrate: redo'. Как отметил Паван в ответе, вы также предпочтете назвать этот столбец «картинка». – BroiSatse