首页 > 解决方案 > rails active storage 错误的 url - 301 状态

问题描述

使用 Active Storage 将一个附加image到一个article

storage.yml

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

article.rb

class Article < ApplicationRecord
  belongs_to :auteur
  has_one_attached :image

以添加文章的形式:

<%= f.file_field :image %>

在 article_controller.rb 中:

def hop
    @auteur = Auteur.find(params[:auteur_id])
    @article = @auteur.articles.new(article_params)
    @article.publie = params[:publie].to_s
    @article.slug = Article.to_slug(@article.titre)
    @article.save
    redirect_to adm_auteur_tous_articles_url
  end

这样做,图像被上传到storage/es/ul/esulvqpj2apfcqx41hwdtnchd5y4

(这是正确的,因为我可以在 MacOs finder 窗口中看到图像)

但在视图中,我这样做:

<%= image_tag(@article.image) if @article.image.attached? %>

图片未显示,因为图片的网址是:

http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--661c66c418b20fc46350823faaac7124c25138dd/chat.jpg

这导致了一个301 moved permanently状态。

所以图像没有显示出来。

标签: ruby-on-railsrails-activestorage

解决方案


从路线中删除这条线就可以了(我把它作为最后一行ot routes.rb:

 get '*path' => redirect('/') 

推荐阅读