Rails関連のことを調べてみた2022年05月17日

Rails関連のことを調べてみた2022年05月17日

rails5 progate 整理メモ 投稿の一覧を表示する

# 投稿一覧にもユーザー情報を表示しよう
“`html
“>
.
.
.
“>
“`
で成功した。
ところで
# “”で2重に囲む理由とはなんなのか?
外側の“`””“`で文字列として扱うのだからいいじゃないか。

srcはパスを表すために””で囲んで文字列にするのはわかる。
ではなぜ
“`<%= %>“`で囲む時も””を囲んで文字列にするのか?わからない。

## “`<%= %>“`とは何か
“`<%= %>“`はrubyの文を実行するためのタグ
## 答えは出なかった。
しかし推測ならできた。
“`<%= %>“`で囲む理由は#{}の式展開(ruby)を使うため。
“`<%= %>“`の中で“`””“`で囲む理由は式展開が“`””“`で囲まれないとただの文字列として扱われてしまうため。
以上のより
“`””“`を2重で囲む必要

元記事を表示

JavascriptからActionTextに値を設定/取得する方法

# 概要
モーダルで入力させてその内容を書き戻すことをしたくて、jsを使用して値の設定/取得をおこなったのでその備忘録です。

# コード
jsでActionTextに初期値を設定する
`$(‘trix-editor’).val(rich_text.body);`

jsでActionTextから入力値を取得する
` $modal_fields.find(‘trix-editor’).text()`
タグ含めて取得できないので↓の方が良い(contentはActionTextで表示するフィールド名)
` $modal_fields.find(‘input[name=”content”]’).val()`

元記事を表示

Rails関連で記事にするほどじゃないけど、まとめておきたいものを列挙する感じの記事です

## ルーティング

ルーティングは、ブラウザから届いたリクエスト(HTTPメソッド+URL)に対して、コントローラーで定義したアク

ションを

結びつける仕組み。

Ruby on Railsではroutes.rbというファイルにルーティングに関するコードを書いていくことでルーティングを

実現させることができる。

MVCモデルと密接に関係していて、よく使うのでどういう特徴があるのかきちんと理解しておくべきです。

## モデル

Railsにおけるモデルとは、簡単に言うとデータベースにアクセスする為の機能を持ったクラス(オブジ

ェクト)のことを言います。

コントローラーの命令に従って、データベースから何らかの情報を取り出したり、あるいはデータベース

に何らかの情報を書き込んだりするのがモデルの主な仕事です。要はデータベースとの橋渡し役ですね。

## gemの追加をしたらbundle install

これはよく忘れるので繰り返し覚えましょう。gemfileにテキストエディタで追加して、ターミナルで

bundle installで

元記事を表示

非同期でNo route mach Get…

## 備忘録で書きます。

いいいね機能実装し、jQueryで非同期処理を行いました。
最初はエラーも出ず順調順調でしたが、、、

## jQueyで非同期が完了した後のこと…

### javascriptファイルを独自に作成

application.jsに
“`
:
import “jQuery”;

import “sample.js”;
:
“`
のような形で記述していました。

jqueryと独自のjavascriptファイルが何やら邪魔をしていたようで一旦、import”sample.js”の記述を削除しました。

すると、エラーも出ずに元どおりになりました。

まだ個人的な問題は解決せずつまずいていますが、Turbolinks関連や、htmlのレスポンスの詳細などに加えて、Webpack関連も少ししれたのでもっと勉強していきたいと思います。

下記の記事を教えて頂いた@mochi_yu2さん。本当にありがとうございます。

参考
https://qiita.com/fujishiro380/items/12e39ec85f162ce6b3c8
https://

元記事を表示

Nuxt.js x Ruby on Rails で画像ファイルを含む内容を保存させるときにやること

## [はじめに](#-はじめに)
フロントエンドにNuxt.js、バックエンドにRails APIモードでの画像ファイルを含む内容を保存させるときにやることの記事です。
Nuxt.js、Railsはそれぞれ構築済みであることとします。

## [必要なもの](#-必要なもの)
`gem carrierwave`

## [実装方法](#-実装方法)
### Rails
1. Gemfileに`carrierwave`を追記しターミナルで`bundle install`します。
“`Ruby:Gemfile
…途中省略
gem ‘carrierwave’, ‘~> 2.0’
“`

“`Ruby:ターミナル
bundle install
“`
2. アップローダークラスの生成
ターミナルで下記コマンドを実行してアップローダークラスを生成します。
“`ruby:ターミナル
bundle exec rails g uploader アップローダー名(大文字始まり)
“`
実行すると、`/app/uploaders/アップローダー名_uploader.rb`が生成されます。

元記事を表示

return、 break、nextの違い

「フォームから入力された値が不正だった場合にエラーメッセージを表示しよう」というメソッドの中で、「もし、このケースであればすぐに次の処理に移りたい」というときその行で「return」させてみたのですがそれだとメソッド自体から離脱してしまい次の行の処理ができなくなってしまったので別の方法を探してみました。

## return

その時のコードはこのような形

“`ruby
def hoge
error_messages = []
CSV.parse(tsv_text, headers: true, col_sep: “\t”) do |row|
error_messages << "shop_id:#{row["shop_id"]}は存在しないIDです" if Shop.find_by(id: row["shop_id"]).blank? error_messages << "user_id:#{row["user_id"]}は存在しないIDです" if User.find_by(id: row["user_id"]).blank? error_mes

元記事を表示

Stimulus 別コントローラーのアクションを呼びたい

“`slim
div[data-controller=”hoge fuga”]
button data-action=”fuga#fugaAction”
“`

“`js:app/javascript/controllers/hoge.js
import { Controller } from “@hotwired/stimulus”

// Connects to data-controller=”hoge”
export default class extends Controller {
initialize() {
this.element[this.identifier] = this 👈これが重要
}

hogeAction() {}
}
“`

“`js:app/javascript/controllers/fuga.js
import { Controller } from “@hotwired/stimulus”

// Connects to data-controller=”fuga”
export default class e

元記事を表示

rails5 progate 整理メモ テーブルの紐付け

各投稿者が「誰がその投稿をしたか」という情報を持っている必要
postテーブルにuser_idカラムを追加する

“`rails g migration“`を用いる。
“`add_user_id_to_posts“`というファイル名のマイグレーションファイルを作成します。

“`
rails g migration add_user_id_to_posts
“`
マイグレーションファイルを作成する。

“`
class AddUserIdToPosts < ActiveRecord::Migration[5.0] def change add_column :posts, :user_id, :integer end end ``` マイグレーションファイルの中身を編集する postsテーブルにuser_idカラム(整数型)を追加する ``` rails db:migrate ``` マイグレーションファイルを編集した後はこれをやる。 ## バリデーションを行う。 ```rb class Post < ApplicationRecord valid

元記事を表示

【Rails】Rails6でのjQueryを使うときのwebpackerの設定

# 初めに

`Rails6`での`webpacker` の設定が分からなくなっていたのでここで書き残しておきます。

## 環境

– Rails 6.1.4
– Ruby 2.7.4
– webpacker 5.4.3

# webpacker

Rails6 の javascript の設定は config/webpacke の下にあるファイルで行います。
今回は jquery が使えるようにします。

## enviroment.js

“`javascript:config/webpack/environment.js
const { environment } = require(“@rails/webpacker”);

const webpack = require(“webpack”);

environment.plugins.prepend(
“Provide”,
new webpack.ProvidePlugin({
$: “jquery”,
jQuery: “jquery”,
jquery: “jquery”,
Pop

元記事を表示

rails5 progate 整理 メモ

人に見せるために書いていません。あくまで自分を落ち着かせるためです。

# ログインしている場合のアクセス制限
ログイン中のユーザーが以下のURLにアクセスした場合には、投稿一覧ページにリダイレクトしてください。
・get /signup
・get /login
・get / (localhost:3000)
・post /users/create
・post /login

## どういう条件をつければいいのだろうか?
前の問題のようにすればいいのではないか?
“`application_controller.rb
def already_user
if @current_user
flash[:notice] = “すでにログインしています”
redirect_to(“posts/index”)
end
end
“`

“`users_controller.rb
class UsersController < ApplicationController before_action :authenticate_user, {onl

元記事を表示

rails5 progate 整理メモ

# ログインしていない場合のアクセス制限
ログインしていないと特定のアクションを作動することができないようにする。
その後ログインページへリダイレクトさせる。

・postsコントローラの全アクション
・usersコントローラのindex, show, edit, updateアクション

その場合にエラーメッセージを表示させる。

## まずログインの条件をつけてみる
どうすればよかったか?
“`if @current_user“`とかにすれば良かったと思う。
じゃない。
“`before_action“`を使えば良かったと思う。
そこでアクションをする前にメソッドを作動させる。

### どのようなメソッドをつけるのか?
ログインしていることがわかればいいから“`application_controller“`の“`set_current_user“`を使えばいいのか? それにonlyをつければいいのかな。
やってみよう。

“`users_controller.rb
before_action :set_current_user, only:[:index :s

元記事を表示

rails5 progate 整理メモ

# ユーザー名を表示させる
問題を出題されたすぐに“`application.html.erb“`が表示されたのでここに書けばいいのか迷った。
それは“`users_controller.rb“`にインスタンス変数に代入させてそこでhtmlに表示されば良いのかどうかと考えたからだ。
結果“`users_controller.rb“`に@userが入っていたのでこの名前のインスタンス変数を使えないので
htmlに直接書いた。
今思うと別の名前のインスタンス変数を作れば良かったかなと思った。
“`application.html
.
.
.

    <% if session[:user_id] %>

  • <%= link_to("#{User.find_by(id: session[:user_id]).name}", "users/#{User.find_by(id: session[:user_id]).id}" %>
元記事を表示

【個人開発】面倒な献立作りから解放し、レベルを上げて料理を楽しむレコメンド献立アプリを作った話

![fun_coo_app_top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2459618/fe6096ad-f0fb-8f0c-e72b-664f385a191b.png)

**こちらの記事を訪れていただき、ありがとうございます。**
この度、タイトルにもある通りポートフォリオとして **「面倒な献立作りから解放し、レベルを上げて料理を楽しむレコメンド献立アプリ(FunCooApp)」** を開発しました。

こちらの記事では、**アプリの制作過程や実際の機能など** を紹介していきます。
**アプリの使用イメージは『[主な機能](#主な機能)』で確認することができます。**

## 簡単な自己紹介

– 神奈川県在住の24歳、男
– 2月前後にRubyの学習を始め、2月中旬からRailsの学習を開始(総学習継続130日[執筆現在])
– 同時に基本情報技術者試験の学習も並行し4月末に受験(スコアレポートでは[合格ライン]でした)

元記事を表示

【Rails】Dockerで環境構築

Dockerを利用してrailsを起動させる方法を備忘録として

# 前提条件として

開発に使用するPCに Docker をインストール。
[Docker公式](URL “https://www.docker.com/”)

次に任意のファイルを作成。
ここでは`rails-docker`としたが、何でもok
“`
$ mkdir rails-docker
$ cd rails-docker
“`

# 必要なファイルの作成
まずは rails-docker ディレクトリローカルの中に
以下の 5 つの空ファイルを作成する

・Dockerfile
・docker-compose.yml
・Gemfile
・Gemfile.lock
・entrypoint.sh

下記コマンドを打てば一回で作成可能
“`
$ touch {Dockerfile,docker-compose.yml,Gemfile,Gemfile.lock,entrypoint.sh}
“`

# Dockerfile を編集

※rubyのバージョンは要確認

“`ruby:Dockerfile
FROM

元記事を表示

windows10でvagrant(ubuntu20.04)を使いrails6のローカル開発環境を構築する

## はじめに(経緯など)

macのローカル開発環境で動かしていたものを、windows上でも動かしたかったのでやってみた。
いろいろな記事を参考にまとめたものになるので、単に構築したいだけなら他の記事のほうがさくっとできるかもしれない。
初学者の自分が書いていいものか迷ったが、このへんの情報がかなり少なく感じたこともあって書いてみることにした。
自分の備忘録的要素が強いです。
ちなみに、作業時間の目安は1~2時間程度です。

## 目次

– 必要なアプリのインストール
– vagrantのセットアップ
– vagrantfile書き換える
– 環境構築
– コンパイラおよび必要なツールをインストール
– rubyのインストール
– railsのインストール
– sqliteのインストール
– node.jsのインストール
– mysqlサーバーとクライアントのインストール
– 補足
– rails sで構築できているか確認
– macからgithubで持ってくる場合
– rails newで新しく作る場合

元記事を表示

ローカルからDocker内に入るコマンド

Dockerでの開発環境が終わり、Railsの基本であるモデルやコントローラー、ビューを作成するコマンドを入力しようとしたが、ターミナルで

homesというコントローラ作成のコマンドを入力すると
“`言語:ターミナル
rails g controller homes
“`

このようなエラーが出た。
Rails is not currently installed on this system. To get the latest version, simply type:
sudo gem install rails
You can then rerun your “rails” command.

ローカルでこのコマンドしてもダメだと気づき、ドッカー内に入らないといけないと認識した。

そこで調べたところ、下記サイトに行きついた。
https://qiita.com/Keitaroooo/items/a30bf4eb9310d7b3f7cd

このサイトにある通りに進めた。

ドッカー内に入る方法は2つ

一つ目は
# dockerコマンド

“`言語:ターミナル
dock

元記事を表示

Ruby on Railsでアプリを作る準備をする

毎回どうだっけと忘れてしまうので、Ruby on Railsのアプリを立ち上げるところまでをまとめました。備忘録です。

## railsをインストールする
Bundlerのインストール
“`
gem install bundler
“`
Railsのインストール
“`
gem install rails
“`

## rails new コマンドでアプリケーション作成の準備

webpackerをインストールする
“`
rails webpacker:install
“`
rails new コマンド
cdコマンドでPC上のアプリを作成したいディレクトリに移動し
“`
rails new アプリケーション名
“`
成功した場合、ターミナルに以下のように表示されます。
![スクリーンショット 2022-05-15 17.37.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602010/7673abed-5b23-632f-65d3-086668ca6551.png)

※rail

元記事を表示

progate 整理 メモ

# ログアウト機能を作成する
ログインするときに“`session[:user_id]“`に代入していたから。
これからidを空にすればいいのかな?
“`nil“`にしていたことを思い出した。

## ログアウトのリンクを作成
“`application.html
.
.
.

  • <%= link_to("ログアウト", "/logout") %>
  • .
    .
    .
    “`
    ## ルーティングを設定
    “` routes.rb
    .
    .
    .
    get “logout” => “users#logout”
    .
    .
    .
    “`
    ## サーバーのレスポンスのアクションを設定
    “`users_controller.rb
    class UsersController < ApplicationController . . . def logout @session[:user_id] = nil flash[:notice] = "ログアウトしました" redirect_to("/login")

    元記事を表示

    【Ruby翻訳】実務でリーダブルコードはどう役に立つのか ~Part1~

    # はじめに

    どうも、最近未経験からエンジニア転職をしたもきおです。
    現役エンジニアの方にオススメされる本で一番紹介されると言っても過言ではない本が「リーダブルコード」。私自身も未経験時代から読んでみたはいいものの後半にいくにつれ「あれ?思ったよりムズくね?初心者向けじゃないやん」と思い本を閉じてしまいました。

    今回入社後改めてCTOにおすすめしていただき、読み切ったのでここでアウトプットしていきたいと思います。
    ## そもそもなぜ読むのが難しいと感じるのか

    「リーダブルコード読むのが難しいとか何いってんの??」という方はこの章を読む必要がないかなと思いますが少なからずこの本が難しいと感じる人は一定数いるのかなと思っております。

    この本を自分が難しいと感じた理由としては2点。
    1.サンプルコードがJavaScriptやC+

    元記事を表示

    エラーが出ないエラー

    本日も宜しくお願いします。

    さて今日は「エラーが出ないのにシステムが動かない」案件に遭遇して困っている(現在進行形)というものです。

    今回は凄くシンプルで、「フォームを使った送信機能の実装です」

    あるテキストを入力し、送信を押したらそのテキストが表示される、というシンプルな物のはずなんですが、、、

    書いたコードは以下

    index.html.erb
    “`rails.qiita.rb

    <%= @title %>

    <%= @msg %>


    “`
    hello_controller.rb
    “`rails.qiita

    元記事を表示

    OTHERカテゴリの最新記事