Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 在RubyonRails4中上载图像或文件_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 在RubyonRails4中上载图像或文件

Ruby on rails 4 在RubyonRails4中上载图像或文件,ruby-on-rails-4,Ruby On Rails 4,在这里,我想要一个关于上传文件或图像而不使用任何gemfile(例如:peperclip、carrierwave等)的清晰概念 以前,我做过一些工作。我可以上传“/assets/images”文件夹中的图像。但当我在我的显示页面中调用它时,我看不到图像(只有一个break image占位符)。 以下是显示页面的屏幕截图: 如何在show.html.erb文件中显示这些图像 这是我的ImagesController.rb文件: class ImagesController < Applic

在这里,我想要一个关于上传文件或图像而不使用任何gemfile(例如:peperclip、carrierwave等)的清晰概念

以前,我做过一些工作。我可以上传“/assets/images”文件夹中的图像。但当我在我的显示页面中调用它时,我看不到图像(只有一个break image占位符)。 以下是显示页面的屏幕截图:

如何在show.html.erb文件中显示这些图像

这是我的ImagesController.rb文件:

class ImagesController < ApplicationController
  before_action :set_image, only: [:show, :edit, :update, :destroy]

  # GET /images
  def index
    @images = Image.all
  end

  # GET /images/1
  def show
  end

  # GET /images/new
  def new
    @image = Image.new
  end

  # GET /images/1/edit
  def edit
  end

  # POST /images
  def create
    @image = Image.new(image_params)
    if params[:image].present?
      file = params[:image][:picture]
      File.open(Rails.root.join('app','assets', 'images', file.original_filename), 'wb') do |f|
        f.write(file.read)
      end
    end

    respond_to do |format|
      if @image.save
        format.html { redirect_to @image, notice: 'Image was successfully created.' }
        format.json { render action: 'show', status: :created, location: @image }
      else
        format.html { render action: 'new' }
        format.json { render json: @image.errors, status: :unprocessable_entity }
      end

    end
  end


  def update
    respond_to do |format|
      if @image.update(image_params)
        format.html { redirect_to @image, notice: 'Image was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: 'edit' }
        format.json { render json: @image.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /images/1
  def destroy
    @image.destroy
    respond_to do |format|
      format.html { redirect_to images_url }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_image
      @image = Image.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def image_params
      params.require(:image).permit(:name)
    end
end
如果你需要更多关于我项目的信息,请告诉我。
请给我一些建议。我想清楚地了解如何上传图像/文件,并在不使用gemfile的情况下显示它们。

您必须将图像上传到一个不需要预编译即可显示的文件夹,就像资产一样。尝试将它们上载到
公用文件夹

此外,您可能还想了解有关资产管道的信息,以及它们为什么不显示:

<p><%= @image.name %></p>

<p><%= image_tag @image.picture %></p>
ActiveRecord::Schema.define(version: 20140725043842) do

  create_table "images", force: true do |t|
    t.string   "name"
    t.string   "picture"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

end