2013-09-11 5 views
0

У меня есть приложение Rails 4 и только что установили драгоценный камень Paperclip для обработки изображения. Я не могу заставить его работать, после того как я загрузил фотографию, она просто говорит, что отсутствует. Кто-то знает, что происходит не так?Rails 4 Paperclip 3.5.1 отсутствует изображение

~ Настройки/_form.html.erb

>  <%= form_for(@setting, :html => { :multipart => true }) do |f| %> 
>  <% if @setting.errors.any? %> 
>   <div id="error_explanation"> 
>   <h2><%= pluralize(@setting.errors.count, "error") %> prohibited this setting from being saved:</h2> 
>  
>   <ul> 
>   <% @setting.errors.full_messages.each do |msg| %> 
>    <li><%= msg %></li> 
>   <% end %> 
>   </ul> 
>   </div> 
>  <% end %> 
>  
>  <div class="field"> 
>   <%= f.label :title %><br> 
>   <%= f.text_field :title %> 
>  </div> 
>  <div class="field"> 
>   <%= f.label :description %><br> 
>   <%= f.text_area :description %> 
>  </div> 
>  <div class="field"> 
>   <%= f.label :paragraph %><br> 
>   <%= f.text_area :paragraph %> 
>  </div> 
>  <div> 
>  <%= f.file_field :photo %> 
>  </div> 
>  <div class="actions"> 
>   <%= f.submit %> 
>  </div> 
>  <% end %> 

Моя установка модель ~ setting.rb

class Setting < ActiveRecord::Base 
    attr_accessible :title, :description, :paragraph 

    has_attached_file :photo 
end 

фотография Migration

class AddAttachmentPhotoToSettings < ActiveRecord::Migration 
    def self.up 
    change_table :settings do |t| 
     t.attachment :photo 
    end 
    end 

    def self.down 
    drop_attached_file :settings, :photo 
    end 
end 

Настройка миграции

class CreateSettings < ActiveRecord::Migration 
    def change 
    create_table :settings do |t| 
     t.string :title 
     t.text :description 
     t.text :paragraph 

     t.timestamps 
    end 
    end 
end 

~ Настройки/show.html.erb

<p id="notice"><%= notice %></p> 
<p> <%= image_tag @setting.photo.url %> </p> <br /> 
<p> 
    <strong>Title:</strong> 
    <%= @setting.title %> 
</p> 

<p> 
    <strong>Description:</strong> 
    <%= @setting.description %> 
</p> 

<p> 
    <strong>Paragraph:</strong> 
    <%= @setting.paragraph %> 
</p> 

<%= link_to 'Edit', edit_setting_path(@setting) %> | 
<%= link_to 'Back', settings_path %> 

не могу понять, что случилось. Загруженное фото не показывает, что оно просто говорит «Отсутствует». Поблагодарили бы за помощь! :)

ответ

0

Я рад сообщить всем, у кого есть или будет такая же проблема, что я только что понял!

По умолчанию сгенерированный контроллер, который вы хотите добавить: Фото атрибут определяет "создать", как это:

def create 
    @setting = Setting.new(setting_params) 
end 

Просто Канге его:

def create 
    @setting = Setting.create(params[:setting]) 
end 

(Только для того, чтобы быть ясным; измените настройку на свое собственное название леса.)

1

Вы можете сохранить fi первый: setting_params. По-видимому, это метод в вашем контроллере для обеспечения сильных параметров (см.: http://guides.rubyonrails.org/getting_started.html#saving-data-in-the-controller).

Чтобы устранить ее, добавьте связь в этом методе, как это:

private 
    def setting_params 
    params.require(:post).permit(:title, :description, :paragraph, :photo) 
    end 
Смежные вопросы