回形针上传并显示图像不起作用



我在Windows 7上安装了回形针->5.1和最新的ImageMagick(是的。我知道(运行 Ruby 2.3.3 和 Rails 5.1.4。

我按照回形针说明的建议安装了文件.exe并将"C:\Program Files (x86(\GnuWin32\bin"添加到我的PATH中。

当我上传图片时,出现以下错误:

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 文章,但到目前为止没有任何帮助。


这是我的路线.rb


Rails.application.routes.draw do
  resources :recipes
  root "recipes#index"
end

这是我的控制器显示/新动作和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

这是我的节目.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。


= 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

这使得回形针只执行命令:

  • 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 并通过图像标记显示它,但样式不起作用。

最新更新