Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【Rails】link_to で formatの指定

タイトルのとおり、link_toメソッドでフォーマットを指定する方法についてです

かなり簡単ですが、意外と記事がヒットしなかったので備忘録的として残しておきます

そもそもformatって?

出力形式のことです
通常はhtml形式で、htmlファイルがレンダリングされてますよね
他にもjson形式やpdf、csvなどがあります

今回はPDFの出力を想定してやってみます

linkの書き方

pathの引数にformatを指定するだけです!

slimファイル
= link_to '表示名', xxx_path(format: :pdf)

他にidを指定したり、parameterを設定する場合にも同じ様に引数に突っ込んじゃってOKです

slimファイル
= link_to '表示名', xxx_path(format: :pdf, id: @post, parameter_name: parameter_content)

コントローラでの処理

コントローラではformatを指定して処理を記述すればOK
pdfの場合はsend_fileを使ってファイルを表示させたりダウンロードさせたりすることが多いと思います。
次のように記述すると、ファイル名を指定してブラウザ上でPDFファイルを開いてくれます

コントローラ
class HogesController < ApplicationController
  def show
    respond_to do |format|
      format.pdf do
        send_file(pdf_path, filename: filename, disposition: 'inline')
      end
    end
  end

  private

  def pdf_path
    # pdfの保存場所を指定
    @post.pdf.path # ← carrierwave使ってればこんな感じかな
  end

  def filename
    # pdfのファイル名を指定
    "#{@post.id}.pdf"
  end
end

余談

rails routesをするとURIパターンの中に(.:format)ってありますよね
これがformat指定したときのURIになります
23d955ea526f9852065207a191d12617.png

たとえば今回のようにformatをpdfにした場合は、URLがhttps://xxxxxx/xxx.pdfみたいになります
フォーマットに応じて末尾に.フォーマット形式の形で追加されるってことなんですね〜

koki_73
レアなつよつよエンジニアを目指しています。 エンジニア集団の中で一意性制約に引っかからないように日々精進
https://koki-73.github.io/my-portfolio/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away