यहां रेल के लिए नौसिखिया। इसलिए मैं अपने प्रोजेक्ट के लिए एक ऑनलाइन लाइब्रेरी बना रहा हूं जहां मैं उपयोगकर्ता की पसंद की ई-किताबें (पीडीएफ के रूप में) अपलोड करने में सक्षम हूं। फॉर्म, ऐड मंगा दो फाइलों में लेता है: थंबनेल (जेपीजी, जेपीईजी, पीएनजी में) और ईबुक की वास्तविक पीडीएफ।

मैं जानना चाहता हूं कि फॉर्म से थंबनेल और पीडीएफ फाइलों दोनों को कैसे प्राप्त करें, और इसे मेरे शो व्यू में प्रदर्शित करें।

शुक्रिया!

1) मैंने लेबल टैग के अंदर आईएमजी टैग लाने की कोशिश की है, हालांकि वर्तमान स्क्रिप्ट के साथ, कुछ भी नहीं लौटा रहा है।

<!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

मैंने एक जोड़ने की कोशिश की: book_params के अंदर फ़ाइल लेकिन यह काम नहीं किया।

4
ninja_nugget 21 अगस्त 2019, 01:51

2 जवाब

सबसे बढ़िया उत्तर

रेल्स ActiveStorage के माध्यम से फाइल अपलोड करने का एक आसान तरीका प्रदान करता है (कुछ रत्न भी हैं जो एक ही काम करते हैं लेकिन अभी के लिए आप ActiveStorage कोशिश कर सकते हैं क्योंकि यह समाधान में बनाया गया है)।

इस विषय में खुदाई शुरू करने के लिए आधिकारिक गाइड अच्छे संसाधन हैं। आप ActiveStorage संबंधित लेख यहां देख सकते हैं:

https://guides.rubyonrails.org/active_storage_overview.html

इंटरनेट पर इसे कैसे सेट अप किया जाए, इस पर कई ट्यूटोरियल भी हैं। यदि आप वीडियो के अधिक हैं तो GoRails अच्छा अवलोकन प्रदान करता है:

https://gorails.com/episodes/file-uploading-with-activestorage-rails-5-2?autoplay=1

मूल रूप से आपको अपने मॉडल में अपने एप्लिकेशन और संबंधित फ़ील्ड में कुछ कॉन्फ़िगरेशन जोड़ने की आवश्यकता होगी। इसके बाद आप अपने नियंत्रक को पैराम में फाइलें पास करने और डेटाबेस में उनके प्रतिनिधित्व को सहेजने में सक्षम होंगे। यह आपको उन्हें आवृत्ति चर से दृश्य में पुनर्प्राप्त करने की अनुमति देगा (जैसे आप अभी title, author और description के साथ करते हैं।

उम्मीद है ये मदद करेगा!

1
Tomasz S 21 अगस्त 2019, 07:40

फ़ाइल एक विशेषता या संघ है? आप किस मॉडल में फ़ाइल अपलोड करने का प्रयास कर रहे हैं, यह पुस्तक है या अन्य संबद्धता मॉडल?

1
Saif chaudhry 21 अगस्त 2019, 10:45