Rails活动存储错误的URL-301状态

时间:2019-06-09 22:08:59

标签: ruby-on-rails rails-activestorage

使用活动存储将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状态。

因此图像未显示。

1 个答案:

答案 0 :(得分:0)

从路由中删除此行就可以了(我把它作为route.rb的最后一行:

button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                text.setText("Please Wait");

                Handler delayHandler = new Handler();
                delayHandler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        boolean res=scanning();
                        if(res) {
                            text.setText("Found");
                        }
                        else{
                            text.setText("Not Found");
                        }
                    }
                },100);
            }
        });