Rails 4 Paperclip 3.5.1丢失图像

时间:2013-09-11 12:25:30

标签: ruby-on-rails ruby paperclip ruby-on-rails-4 photo

我有一个Rails 4应用程序,只是安装了Paperclip gem来处理图像上传。在我上传照片之后,我说它不能正常工作。 有人知道出了什么问题?

〜设置/ _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 %>

我的设置型号~settings.rb

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

    has_attached_file :photo
end

照片迁移

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 %>

无法弄清楚出了什么问题。上传的照片没有显示它只是说“失踪”。非常感谢一些帮助! :)

2 个答案:

答案 0 :(得分:1)

您可以保留第一个: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

答案 1 :(得分:0)

我很高兴告诉每个人我已经或者将会遇到同样的问题,我只是想出来了!

默认您要生成的控制器,您要添加:photo属性来定义“创建”,如下所示:

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

只需将其归为:

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

(只是要明确;将设置更改为您自己的脚手架名称。)