回形针上传并显示图像不起作用
Paperclip upload and showing the image not working
我在 Windows 7 上安装了回形针 -> 5.1 和最新的 ImageMagick(是的..我知道)运行 Ruby 2.3.3 和 Rails 5.1.4 .
我按照回形针说明安装了 file.exe,并将 'C:\Program Files (x86)\GnuWin32\bin' 添加到我的路径中。
上传图片时出现以下错误:
ActionController::RoutingError (No route matches [GET] "/images/medium/missing.png"):
当我尝试查看显示页面以查看图像时,出现以下错误:
ActionController::RoutingError (No route matches [GET] "/system/recipes/images/000/000/005/medium/Capture777.PNG"):
你能指导我如何正确上传和展示我的图片吗?我假设错误会提供一些输入。我尝试关注其他 SO 文章,但到目前为止没有任何帮助。
这是我的 routes.rb
Rails.application.routes.draw do
resources :recipes
root "recipes#index"
end
这是我的控制器 show/new 操作和 find_recipe 参数
def show
@recipe = find_recipe
end
def new
@recipe = Recipe.new
end
private
def find_recipe
@recipe = Recipe.find(params[:id])
end
def recipe_params
params.require(:recipe).permit(:title, :description, :image)
end
这是我的模型
class Recipe < ApplicationRecord
has_attached_file :image, style: { :medium => "400x400#" }
validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/
end
这是我的 show.html.haml
= image_tag @recipe.image.url(:medium, class: "recipe_image")
%h1= @recipe.title
%p= @recipe.description
= link_to 'Back', root_path, class: 'btn btn-info'
= link_to 'Edit', edit_recipe_path, class: 'btn btn-primary'
= link_to 'Delete',recipe_path, method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-danger'
这是我的 _form.html.haml
= simple_form_for @recipe, html: { multipart: true } do |f|
- if @recipe.errors.any?
#errors
%p
= @recipe.errors.count
Prevented this recipe from saving
%ul
- @recipe.errors.full_messages.each do |msg|
%li = msg
.panel-body
= f.input :title, input_html: { class: 'form-control' }
= f.input :description, input_html: { class: 'form-control' }
= f.file_field :image, input_html: { class: 'form-control' }
= f.button :submit, class: 'btn btn-primary'
问题是您尝试使用样式选项的方式,它必须是 styles
,更换它并重试:
class Recipe < ApplicationRecord
has_attached_file :image, styles: { medium: '400x400#' }
validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/
end
这使得 Paperclip 只执行命令:
Command :: file -b --mime
开始交易
Command :: file -b --mime
创建副本
改为:
Command :: file -b --mime
Command :: identify -format
Command :: identify -format %m
Command :: convert
Command :: file -b --mime
因此您无法通过 :medium
样式获取图像,但您可以访问其 url 并通过图像标签显示它,但样式不起作用。
我在 Windows 7 上安装了回形针 -> 5.1 和最新的 ImageMagick(是的..我知道)运行 Ruby 2.3.3 和 Rails 5.1.4 .
我按照回形针说明安装了 file.exe,并将 'C:\Program Files (x86)\GnuWin32\bin' 添加到我的路径中。
上传图片时出现以下错误:
ActionController::RoutingError (No route matches [GET] "/images/medium/missing.png"):
当我尝试查看显示页面以查看图像时,出现以下错误:
ActionController::RoutingError (No route matches [GET] "/system/recipes/images/000/000/005/medium/Capture777.PNG"):
你能指导我如何正确上传和展示我的图片吗?我假设错误会提供一些输入。我尝试关注其他 SO 文章,但到目前为止没有任何帮助。
这是我的 routes.rb
Rails.application.routes.draw do
resources :recipes
root "recipes#index"
end
这是我的控制器 show/new 操作和 find_recipe 参数
def show
@recipe = find_recipe
end
def new
@recipe = Recipe.new
end
private
def find_recipe
@recipe = Recipe.find(params[:id])
end
def recipe_params
params.require(:recipe).permit(:title, :description, :image)
end
这是我的模型
class Recipe < ApplicationRecord
has_attached_file :image, style: { :medium => "400x400#" }
validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/
end
这是我的 show.html.haml
= image_tag @recipe.image.url(:medium, class: "recipe_image")
%h1= @recipe.title
%p= @recipe.description
= link_to 'Back', root_path, class: 'btn btn-info'
= link_to 'Edit', edit_recipe_path, class: 'btn btn-primary'
= link_to 'Delete',recipe_path, method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-danger'
这是我的 _form.html.haml
= simple_form_for @recipe, html: { multipart: true } do |f|
- if @recipe.errors.any?
#errors
%p
= @recipe.errors.count
Prevented this recipe from saving
%ul
- @recipe.errors.full_messages.each do |msg|
%li = msg
.panel-body
= f.input :title, input_html: { class: 'form-control' }
= f.input :description, input_html: { class: 'form-control' }
= f.file_field :image, input_html: { class: 'form-control' }
= f.button :submit, class: 'btn btn-primary'
问题是您尝试使用样式选项的方式,它必须是 styles
,更换它并重试:
class Recipe < ApplicationRecord
has_attached_file :image, styles: { medium: '400x400#' }
validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/
end
这使得 Paperclip 只执行命令:
Command :: file -b --mime
开始交易Command :: file -b --mime
创建副本
改为:
Command :: file -b --mime
Command :: identify -format
Command :: identify -format %m
Command :: convert
Command :: file -b --mime
因此您无法通过 :medium
样式获取图像,但您可以访问其 url 并通过图像标签显示它,但样式不起作用。