2015-07-15 2 views
0

Я пытаюсь реализовать функцию загрузки снимков (без драгоценного камня), и когда я нажать представить после выбора фотографии я получаю эту ошибку: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> 

Я использую простое перетаскивание загрузки. Спасибо за вашу помощь. Я очень ценю это!

+0

Вы добавили файл миграции поддержки существующих. Эта миграция уже продвигается к производству или git? Если это так, вы не должны этого делать и вместо этого создавайте новую миграцию. Если это новая миграция (не нажата нигде - существует только локально), но она уже запущена, вам нужно запустить 'rake db: migrate: redo'. Как отметил Паван в ответе, вы также предпочтете назвать этот столбец «картинка». – BroiSatse

ответ

1

ActiveRecord::UnknownAttributeError in PicturesController#create

unknown attribute 'picture' for Picture

Вы :pictures в вашем миграции файл вместо :picture и вы используете :picture в picture_params методом.

ли rake db:rollback, изменить его :picture и сделать rake db:migrate

+0

спасибо! какая команда для редактирования файла миграции? – icecreamrabbit

+0

@icecreamrabbit Просто откройте, отредактируйте и сохраните :) – Pavan

+0

спасибо! я отредактировал его и запустил db: migrate, но ничего не появилось в командной строке - я предполагаю, что он прошел гладко. im все равно получаю ту же ошибку :( – icecreamrabbit

Смежные вопросы