我正在尝试使用Paperclip在我的应用上设置图像上传器,我唯一的问题是我不断收到Undefined Method错误。 我把它设置在github上,https://github.com/BBaughn1/savagelysaving
我的用户控制器:
class UserController < ApplicationController
def create
@user = User.create( user_params )
end
def destroy
@user.image = nil
@user.save
end
private
# Use strong_parameters for attribute whitelisting
# Be sure to update your create() and update() controller methods.
def user_params
params.require(:user).permit(:image)
end
end
然后是我的Show.html.erb文件:
<div id="post_content">
<h1 class="title">
<%= @post.title %>
</h1>
<p class="date">
Submitted <%= time_ago_in_words(@post.created_at) %> Ago
<% if user_signed_in? %>
| <%= link_to 'Edit', edit_post_path(@post) %>
| <%= link_to "Delete", post_path(@post), method: :delete, data: { confirm: 'Are you sure?' } %>
<% end %>
</p>
<p class="body">
<%= @post.body %>
<%= image_tag @post.image.url(:medium) %>
</p>
<div id="comments">
<%= render 'disqus' %>
</div>
</div>
在我的post.rb文件中:
class Post < ActiveRecord::Base
has_many :comments, dependent: :destroy
validates :title, presence: true, length: { minimum: 5 }
validates :body, presence: true
attr_accessor :image
has_attached_file :image, styles: { medium: "300x300>", thumb: "100x100#" }, default_url: "/images/:style/missing.png"
validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/
end
在我的development.rb文件中:
Rails.application.configure do
***STUFF***
Paperclip.options[:command_path] = "/usr/local/bin/"
端 并发布控制器:
class PostsController < ApplicationController
# before_action :find_post, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!, except: [:index, :show]
def index
@posts = Post.all.order('created_at DESC')
end
def new
@post = Post.new
attr_accessor :image
end
def create
attr_accessor :image
@post = Post.new(post_params)
if @post.save
redirect_to @post
else
render 'new'
end
end
def show
@post = Post.find(params[:id])
end
def edit
@post = Post.find(params[:id])
end
def update
@post = Post.find(params[:id])
attr_accessor :image
if @post.update(params[:post].permit(:title, :body, :image))
redirect_to @post
else
render 'edit'
end
end
def destroy
@post = Post.find(params[:id])
@post.destroy
redirect_to root_path
end
private
def post_params
params.require(:post).permit(:title, :body, :image)
end
end
答案 0 :(得分:0)
我看着你的github,看看你是否犯了同样的错误。我想你忘了将imagemagick添加到你的development.rb文件中。在本地计算机上安装imagemagick时,需要查看它的安装位置; which convert
哪里显示在哪里。它可能看起来像Paperclip.options[:command_path] = "/usr/local/bin/"
,如果没有,只需复制它显示的内容并编辑引号中的内容&#34; &#34 ;.
我希望这有助于我知道我在使用它时遇到了一些麻烦。