Html 如何使用Rails从表单上传文件以显示到另一个视图?
新手到Rails来。因此,我正在为我的项目创建一个在线图书馆,在那里我可以上传用户选择的电子书(PDF格式)。表单addmanga包含两个文件:电子书的缩略图(jpg、jpeg、png)和实际的pdf 我想知道如何从表单中获取缩略图和pdf文件,并将其显示在我的show视图中 谢谢大家! 1) 我已经尝试将img标记引入label标记中,但是对于当前脚本,没有返回任何内容Html 如何使用Rails从表单上传文件以显示到另一个视图?,html,ruby-on-rails,ruby,Html,Ruby On Rails,Ruby,新手到Rails来。因此,我正在为我的项目创建一个在线图书馆,在那里我可以上传用户选择的电子书(PDF格式)。表单addmanga包含两个文件:电子书的缩略图(jpg、jpeg、png)和实际的pdf 我想知道如何从表单中获取缩略图和pdf文件,并将其显示在我的show视图中 谢谢大家! 1) 我已经尝试将img标记引入label标记中,但是对于当前脚本,没有返回任何内容 <!DOCTYPE html> <html lang="en"> <head>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<%= csrf_meta_tag %>
<title>Document</title>
</head>
<body>
<div class="container">
<div class="information">
<h1>Title</h1>
<p><%= @book.title%></p>
<h1>Author</h1>
<p><%= @book.author%></p>
<h1>Description</h1>
<p><%= @book.description%></p>
</div>
</div>
<%= link_to "Edit", edit_book_path(@book), :class => "btn btn-default" %>
<!--after you make this make edit method in books controller-->
<%= button_to "Delete", book_path(@book),
method: :delete,
data: {confirm: 'Are you sure?'},
:class => "btn btn-danger" %>
</body>
</html>
This is my books controller.
class BooksController < ApplicationController
skip_before_action :verify_authenticity_token
def index #step 4
@books = Book.all
end
def show #step 3
@book = Book.find(params[:id]) #get individual post page
end
def newBook
@book = Book.new
#creates a new post of registered books
end
def create #Step 2
#render plain: params[:books].inspect #see what data is sent
@book = Book.new(book_params)
if(@book.save)
redirect_to @book
else
render 'newBook' #if title is not there, just re renders newBook page
end
end
def edit
@book = Book.find(params[:id]) #after this, make edit.html.erb
end
def update
@book = Book.find(params[:id])
if(@book.update(book_params))
redirect_to @book
else
render 'edit'
end
end
def destroy
@book = Book.find(params[:id])
@book.destroy
redirect_to books_path
end
def mangaList
@books = Book.all
end
private
def book_params #can only be accessed from this class #step1
params.require(:books).permit(:title, :author, :description)
end
end
文件
标题
作者
描述
“btn btn默认值”%>
“btn btn危险”%>
这是我的图书管理员。
类BooksController
我尝试在书参数中添加:文件,但没有成功。Rails提供了一种通过
ActiveStorage
上传文件的简单方法(也有一些gem可以做同样的事情,但现在你可以尝试ActiveStorage
,因为它是内置解决方案)
官方指南是开始深入研究这个话题的好资源。您可以在这里找到ActiveStorage
相关文章:
还有很多关于如何在互联网上设置它的教程。如果您更喜欢视频,guy GoRails提供了不错的概述:
基本上,您需要将一些配置添加到应用程序中,并将相关字段添加到模型中。在此之后,您将能够将参数中的文件传递给控制器,并将其表示形式保存在数据库中。这将允许您在视图中从实例变量中检索它们(就像您现在使用title
、author
和description
所做的那样)
希望这有帮助!文件是属性还是关联?
您试图上传的文件是图书还是其他关联模型?谢谢您的帮助!问题已经解决!只需添加一个图像标记,愚蠢的我。但我看了教程,非常有用。没问题,很高兴我能提供帮助。这是一个属性,只需在我的视图中添加一个图像标记。谢谢您的帮助!好的,谢谢您可以使用CarrierWave gem很容易实现,请仔细阅读文档,如果您仍然需要帮助,可以ping。