Rails文件上传实例详细图解

我们可以通过文件上传在Rails中上传文件。在本教程中, 我们将学习如何上传文件。
让我们看一个通过Rails上传文件的例子。
例:
步骤1创建一个名为upload的Rails应用程序。

rails new upload

步骤2更改要上传的目录。
cd upload

步骤3安装以下Gem。
gem install carrierwave gem install bootstrap-sass

步骤4转到目录中的Gemfile并添加以下gem。
gem 'carrierwave' gem 'bootstrap-sass'

步骤5运行以下命令。
bundle install

步骤6使用两个字符串作为名称和附件创建一个模型。
rails g model Resume name:string attachment:string

【Rails文件上传实例详细图解】步骤7迁移数据库。
rake db:migrate

步骤8在你的应用程序中生成控制器文件。
rails g controller Resumes index new create destroy

步骤9在这一步中, 我们将通过carrierwave gem创建一个上传器。
rails g uploader attachment

步骤10现在打开app / models / resume.rb模型文件, 并编写以下代码。
class Resume < ApplicationRecord mount_uploader :attachment, AttachmentUploader # Tells rails to use this uploader for this model. validates :name, presence: true # Make sure the owner's name is present. end

步骤11转到config / routes.rb文件并编写以下代码。
resources :resumes, only: [:index, :new, :create, :destroy] root "resumes#index"

步骤12转到app / controllers / resumes_controller.rb文件并编写以下代码。
class ResumesController < ApplicationController def index @resumes = Resume.all end def new @resume = Resume.new end def create @resume = Resume.new(resume_params) if @resume.save redirect_to resumes_path, notice: "Successfully uploaded." else render "new" end end def destroy @resume = Resume.find(params[:id]) @resume.destroy redirect_to resumes_path, notice:"Successfully deleted." end private def resume_params params.require(:resume).permit(:name, :attachment) end end

步骤13在app / assets / stylesheets / resumes.scss文件中添加引导程序。
@import "bootstrap";

步骤14转到app / views / layouts / application.html.erb文件并编写以下代码。
< !DOCTYPE html> < html> < head> < title> File Uploading< /title> < %= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %> < %= javascript_include_tag "application", "data-turbolinks-track" => true %> < %= csrf_meta_tags %> < /head> < body> < div> < %= yield %> < /div> < /body> < /html>

步骤15转到app / views / documents / index.html.erb文件。
< div class="container"> < % if !flash[:notice].blank? %> < div> < %= flash[:notice] %> < /div> < % end %> < br> < %= link_to "New Resume", new_resume_path %> < br> < br> < table border="3"> < thead> < tr> < th> Candidate Name< /th> < th> Download Link< /th> < th> Action< /th> < /tr> < /thead> < tbody> < % @resumes.each do |resume| %> < tr> < td> < %= resume.name %> < /td> < td> < %= link_to "Download", resume.attachment_url %> < /td> < td> < %= link_to "Delete", resume, method: :delete, confirm: "Are you sure you want to delete #{resume.name}?" %> < /td> < /tr> < % end %> < /tbody> < /table> < /div>

步骤16转到app / views / documents / new.html.erb文件。
< div class="container"> < % if !@resume.errors.empty? %> < div> < ul> < % @resume.errors.full_messages.each do |msg| %> < li> < %= msg %> < /li> < % end %> < div class="container"> < % if !@resume.errors.empty? %> < div> < ul> < % @resume.errors.full_messages.each do |msg| %> < li> < %= msg %> < /li> < % end %> < /ul> < /div> < % end %> < div> < %= form_for @resume, html: { multipart: true } do |f| %> < %= f.label :name %> < %= f.text_field :name %> < br> < br> < %= f.label :attachment %> < %= f.file_field :attachment %> < br> < %= f.submit "Save" %> < % end %> < /div> < /div>

步骤17现在启动服务器。
rails s

步骤18在浏览器上运行此链接http:// localhost:3000 /
以下页面将出现在你的面前。
Rails文件上传实例详细图解

文章图片
单击新简历。
Rails文件上传实例详细图解

文章图片
点击保存按钮。你的文档将被上传。
Rails文件上传实例详细图解

文章图片
要下载此文档, 请单击” 下载” 链接。
要删除此文档, 请单击” 删除” 链接。
Rails文件上传实例详细图解

文章图片
下载
下载此示例

    推荐阅读