Rails関連のことを調べてみた2020年02月14日

Rails関連のことを調べてみた2020年02月14日
目次

ぼっち演算子

Deviseを使ったRailsのコードがあるとします。
これはDeviseを使用したときのcurrent_userに対して、nicknameカラムに
あるデータを取得して@nicknameに代入することを意図したものです。

————

@nickname = current_user.nickname

————–
ただし、ログインしないときにこれを実行するとnilに対してメソッドを使おうとしてエラーになってしまいます。

これを回避できる記述がRuby2.3からできるようになりました。
それがどのような記述か、またそれはどのような動きをするのかについて説明していきます。

解答
@nickname = current_user&.nickname

&はsafe navigation operator、 lonely operator(ぼっち演算子)などと呼ばれる演算子です。

メソッドに続けて記述すると、そのメソッドがnilでなかった場合のみ右辺のメソッドが実行されます。

もしnilだった場合は全ての演算結果としてnilを返します。つまり

元記事を表示

ルーティングを設定してCSVデータをダウンロードする方法

# 目的
– Qiitaの記事に大まかな流れをテンプレート化しておき、作業効率を上げる。
– 今までの実装では `send_data` しか使ったことなかったのでメモ

# 前提条件
– ruby 2.6.0
– ruby 5.2.2

# 手順

1. routes.rbにCSVダウンロード用のルーティングを設定する
2. CSVダウンロードボタンを設定したいviewファイルに書く
3. コントローラーに変数を定義やその他諸々を設定
4. 出力データを作成(アクション名.csv.ruby)

※コード内容は適当

## 1. routes.rbにCSVダウンロード用のルーティングを設定する

“`ruby:config/routes.rb

resources :card_infos do
collection do
# デフォルト形式をcsvに設定
get :csv_download, defaults: { format: ‘csv’ }
end
end
“`

|Helper|HTTP Verb|Path|Controller#Action|

元記事を表示

[Rails] scriptタグ内でRuby/Railsのメソッドを使用する際のescape_javascriptについて

## この記事を書くきっかけ

jQueryを書いていると、scriptタグ内でRailsのメソッド(正確にはapplication_helper内のメソッド)を使用したいときがあります。
正しい書き方をしないと正確に呼び出せないため、失敗した書き方と成功した書き方をまとめます。

## 前提

current_userの属性によってpathを切り替えるメソッドを
`def hogehoge_path_for`とし、application_helper.rbに定義します。

“`ruby:application_helper.rb
def hogehoge_path_for
if …
hoge_path
else
hogehoge_path
end
end
“`

これをとあるviewのscriptタグ内で呼び出します。
`let path = hogehoge_path_forの返り値`
としたいです。

## 失敗例1

“`ruby:あるview