- 1.
- 2. Before Rails Tutorial1章 環境構築 Paiza
- 3. 【Ruby】意外と知らない!?標準入力から値を受け取る方法
- 4. 【Ruby】意外と初心者は知らない?頻出メソッド
- 5. 【Rails】コメント機能をAjax実装① 準備編
- 6. DockerでRails6の環境構築
- 7. session”メソッド”って本当にメソッドなの?
- 8. public private protected の違いをあらためて
- 9. 【Rails】orderメソッドが効かないとき
- 10. 【paiza】【Ruby】paizaの標準入力について、入力値を可変させてデバッグする方法
- 11. 【Rails】【通報機能】ユーザー通報機能を作ってみました
- 12. 複合テストコードのまとめ
- 13. 【Rails】指定日の投稿数を非同期通信化にて表示!
- 14. ?【初学者用】Ruby・Rails環境構築
- 15. タイムスタンプを見ず、中身が変わっていたらビルドする
- 16. 日付系のメモ
- 17. 7日間の投稿をグラフ化 ~application.jsファイルが大事~
- 18. [ruby] [paiza] 配列を扱う上での個人的な小ステップアップ
- 19. 【Rails】「… 続きを見る」という部分を作る。(truncateの実装とminitestの追加)
- 20. グループ機能全般で利用できるサイト
<%= render @boards %>
部分テンプレートを呼び出す際に使用される。部分テンプレートとは“`_board.html.erb“`などのことで、この部分テンプレートを繰り返し表示される際にはcollectionを使用する。
例えば
“`_board.html.erb
<%= board.title% >
<%= board.body% >
“`
この部分テンプレートをcollectionを使用せずに書くと
“`index.html.erb
<% @boards.each do |board| %>
<%= render 'board', board: board %>
<% end %>
“`
eachを使い繰り返し呼び出している。collectionを使用し書くと
“`index.html.erb
<%= render partial: 'board', collection: @boards %>
“`
collectionに@boardを渡して、内部要素を1つ1つ取り出している。意味的にはにはeach文とほぼ同じように見えるが、まとめて部分テンプレート呼び出すためパフォーマンスが良
Before Rails Tutorial1章 環境構築 Paiza
## はじめに
## [対象者]
+ Ruby HTML CSSをある程度理解しているが、Rails Tutorial で挫折した。
+ **不安なので誰かの解説を受けながら一緒に作りたい。**
+ **「Railsで試しにアプリケーションを作りたいが、何も思いつかない」**## [前提知識]
全ての知識が必要ではありませんが、Railsの前に学習しておくことを推奨します。
Railsの学習をはじめた初学者が陥る問題として、Rails以外の関連知識が不足しているため
挫折するといったケースが多く見受けられます。未学習の方は Progate の下記コースを奨めています。
#### 学習済であることが推奨される
**【HTML&CSS】 基礎(入門書や [Progate HTML & CSS](https://prog-8.com/courses/html))レベル**
**【Ruby】 基礎(入門書や [Progate](https://prog-8.com/courses/ruby))レベル**
**【データベース】 基礎 (https://products.sint.c
【Ruby】意外と知らない!?標準入力から値を受け取る方法
## 標準入力?
### 標準入力とは
標準入力はプログラムに値を渡す入力元のこと、標準出力はプログラムから出力される値の出力先のことをいいます。 標準入力の仕組みを使うと、キーボードやファイルなど外部から値(データ)をプログラムに与えることができる。### 前提条件
前提として使用言語は、Rubyになることを予めお伝えしておきます。
そしてPaizaにて標準入力があったため、メモを含めて記事にします。## 1行に1要素だけの場合
“`
//標準入力
Tokyoline = gets
p line//出力結果
“Tokyo”
“`## 1行に複数要素があった場合
“`
//標準入力
Tokyo Osaka Kyotoline = gets.split(‘ ‘)
p line//出力結果
[“Tokyo”, “Osaka”, “Kyoto”]
“`※splitはsplit(”)のシングルクォート内の文字で文字列を分解する。
例えば、Tokyoという文字をそれぞれ一文字ずつ取得したければ、シングルクォートの中に何も入れずにすると下記のように取得でき
【Ruby】意外と初心者は知らない?頻出メソッド
## Rubyでの頻出メソッドをまとめてみた
### 入力メソッド
“`
//入力値:文字列
input = gets//入力値:文字列
input = gets.chomp//入力値:数値
input = gets.to_i//入力値:数値
input = gets.chomp.to_i
“`上記は文字列および数字を入力する際のメソッドである。
それぞれ二つずつ書いているが、その違いは**改行があるかないか**の違いである。
**chomp**をつけることによって改行がなくなる。### 配列メソッド
“`
//入力値(数値)を配列に格納
input = gets.split.map(&:to_i)//分割して配列に格納
a,b,c = gets.split(” “).map &:to_i//入力値を順番に格納
a = readlines.map &:to_i
“`
gets.split.map(&:to_i)は**スペース区切りで数値が並んでいる入力**ができる。
たまにsplit(“”)と引数に区切り文字の半角スペースを指定している人を見かけ
【Rails】コメント機能をAjax実装① 準備編
コメント機能を実装したので、記録を残します___φ(•ᴗ•๑)
間違っている箇所があれば、ご指摘頂けると大変助かります。実装内容
—
・投稿記事に対してコメント機能をつける
・ログインユーザーのみコメント可能
・投稿・削除・更新を非同期で実装する前提
—–
・Rails6
・Devise導入済
・jQuery導入済
・Bootstrap5
・記事投稿機能を実装済準備
—
#### (1)Commentモデルを作成Commentモデルに、user_idとpost_idを忘れずに追加します。
“`
rails g model Comment body:text user_id:integer post_id:integer
rails g db:migrate
“`モデルにアソシエーションとバリデーションを追加します。
“`ruby
class Comment < ApplicationRecord belongs_to :user belongs_to :post validates :body, presence: true
DockerでRails6の環境構築
# 前置き
DockerやGitなどはインストール、初期設定済みのものとします
新規にアプリを作成するときに毎度調べるのも面倒なので備忘録として### 環境
– MacOS Monterey(cpu intel)
– Docker -v 20.10.16
– docker-compose v2.3.3
### 構築内容
– Rails6
– DB postgresql# 手順
– 必要なディレクトリとフォルダを用意
Docments下に作成するアプリのディレクトリを作り、移動
“`
$ mkdir myapp
$ cd myapp
“`
必要なフォルダを作成
“`
$ touch Dockerfile Gemfile Gemfile.lock docker-compose.yml entrypoint.sh
“`
dockerfileに記述
“`
FROM ruby:2.7.4## nodejsとyarnはwebpackをインストールする際に必要
# yarnパッケージ管理ツールをインストール
RUN curl -sS https://dl.yarnpkg.co
session”メソッド”って本当にメソッドなの?
# はじめに
session **”メソッド”** って言うけど、使われ方が全然メソッドっぽくない。
sessionメソッドは以下のようにして使われる。
“`ruby
session[:user_name] = user.name
“`
まるでハッシュのようだ。しかも
“`ruby
session.class
=> ActionDispatch::Request::Session
“`というふうにあたかもsessionというオブジェクトに対して`class`メソッドが使えているように見える。
果たして本当にsessionはメソッドなのだろうか?
## 先に結論
メソッドである。
コントローラー内でbyebug↓
“`ruby
(byebug) defined? session
#=> “method”
“`続けてsessionとだけ打ってみる。
“`ruby
(byebug) session
#
public private protected の違いをあらためて
# はじめに
Rubyのアクセス修飾子(メソッドの呼び出し制限の識別子)について、学習を開始してすぐに調べたことがあったのですが、その時の曖昧な理解のまま現在に至っていたので、機会があったのであらためて調べてみました。その結果、わかったことをまとめます。# 定義をRubyリファレンスマニュアルで確認
> メソッドは public、private、protected の三通りの呼び出し制限を持ちます。
> – public に設定されたメソッドは制限なしに呼び出せます。
> – private に設定されたメソッドは関数形式でしか呼び出せません。 ただし self.foo のように self. と書かれている場合は呼び出すことができます。
> – protected に設定されたメソッドは、そのメソッドを持つオブジェクトが selfであるコンテキスト(メソッド定義式やinstance_eval)でのみ呼び出せ ます。引用:[クラス/メソッドの定義](https://docs.ruby-lang.org/ja/latest/doc/spec=2fdef.html#singleton
【Rails】orderメソッドが効かないとき
1対多のアソシエーションの場合の並び替えで躓いたのでメモφ(´・ω・`)メモメモ
今回は、記事に対するコメントを新着順で並び替えです。
まず、新着順にするために下記のように、
コントローラーにorder(created_at: :desc)を追記しました。
しかし、並び替えされず・・・“`ruby
# app/controllers/post_controller.rbdef show
#~~省略~~
@comment = Comment.new
@comments = @post.comments.order(created_at: :desc)
end
“`解決方法
—-**1) postモデルに-> { order(created_at: :desc) }を追加**
※dependent: :destroyの前に置くとエラーになりました。
“`ruby
# app/models/post.rbclass Post < ApplicationRecord belongs_to :user has_many :comments
【paiza】【Ruby】paizaの標準入力について、入力値を可変させてデバッグする方法
paizaの解答欄では標準入力が一つしか与えられず、説明文の中で下記のように記載されていましたが、入力値を変える方法が分からず苦労したので、まとめてみました。
_「複数の与えられる入力でテスト致しますので、 サンプル入力だけでなく入力値を可変させてデバッグしていただく事をお勧めいたします。」_かなり基礎的なところでしたが、私はVSCodeで回答とinputファイルをそれぞれ作成した上でファイルをリダイレクトして標準入力したところ、上手くいきました。
(リダイレクトは、rubyというよりはlinux?)~~~ruby:example.rb
N = gets.to_i
ans = []
N.times do
ans << gets.chomp.split.map(&:to_i) end print ans ~~~ ~~~input.txt 4 13 12 11 12 1 1 4 4 ~~~ ~~~ターミナル $ ruby example.rb < input.txt ~~~ 【参考】 https://www.kenschool.jp/blog/?p=1143 初学者のた
【Rails】【通報機能】ユーザー通報機能を作ってみました
ポートフォリオを作っていた際にwebアプリケーションでよく見かけるユーザー通報機能を実装したいと思い、実装の仕組みを検索してみたのですがほとんどヒントを見つけられませんでした。
なので、自己流でユーザー通報機能を実装してみました。まだまだ初心者のため、諸々間違いがあるかもしれませんが、この記事が少しでも皆さんの助けになると幸いです。(何かお気づきのことがあればコメントお願いいたします> <) ### 【環境】 - Rails 6.1.5.1 - ruby 2.6.3 ### 【前提】 - 管理者機能(Admin)を実装しています! - deviseを使っています! ### 【実現したいこと】 - 自分以外のユーザーを通報できる機能。 - 通報されたユーザーを管理者が確認できる。 - その通報のステータス(対応済み等)を更新できる。 - 管理者の判断でユーザーを退会扱いとする事ができる。そのユーザーはログインできなくなる。 ### 【テーブル設計】 | User | Report | | ---- | ---- | | name | reporter_id | | em
複合テストコードのまとめ
## はじめに
初心者なりにまとめたものになりますので、諸先輩方からは何書いてんだおめえと感じる部分があると思います。
そう感じた際は、お手数ですが、コメント頂けると幸いです。内容は、自分がテストコードを書く際に使用した物の構成になります。
## 目次
– visit
– expect– マッチャ(matcher)とは
-include
-eq
-have_content
-have_no_content
-have_selector
-have_link
-change– find().click
– find().hover
– fill_in## visit
リクエストを送り、指定されたページへ遷移するためのコード
下のように記述することで、prefixにルーティングされているpathのビュー先へ遷移するvisit tweets_path
visit 「prefixのパス」_path## expect
「アプリの実際の挙動」と「製作者が想定している挙動」が一致するかどうかを判断する記述
マッチャ(matcher)と呼ばれる検証する条件
【Rails】指定日の投稿数を非同期通信化にて表示!
##### ★先駆者様の記事を見ながら真似して実装してみました!↗︎
皆さんもぜひ参考にして下さい(^。^)σhttps://qiita.com/nao0725/items/3ce5512500b38ea75431
なんですが、、、
真似しても中々実装できず、とても苦労したので、復習も兼ねてまとめてみます。
語彙力、コミュ力なしの期待値なし人材が書くので、耳にポテチ挟みながら見て下さいm(_ _)m#### 〜完成イメージ〜
何も入力してない時は、「年/月/日」が入る!
![スクリーンショット 2022-06-26 18.50.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2717077/e1e05359-1605-0955-fd51-545579e1d521.png)
日付指定後、検索ボタンを押すと、すると、、、
検索結果(投降数OTZ)が一瞬で出てくる(非同期通信すげぇ!!!)
![スクリーンショット 2022-06-26 18.50.13.png](https://qiita-im
?【初学者用】Ruby・Rails環境構築
# はじめに
今回もPC変えたときに困らないよう環境構築を載せておきます。
PCの環境構築はこちらから↓https://qiita.com/hondano_gentuki/items/0cb7367f390e36f1a047
# 環境構築
## Ruby
### rbenv と ruby-buildのインストール
まずはRubyの土台となる、rbenvとruby-buildを、Homebrewを用いてインストールします。
Homebrewをインストールしていない方は上記のPC環境構築をご覧ください。
“`Ruby:ターミナル
brew install rbenv ruby-build
“`
続いてrbenvをどこからも使用できるようにします。
“`Ruby:ターミナル
% echo ‘eval “$(rbenv init -)”‘ >> ~/.zshrc
“`
続いてzshrcの変更を反映させます。
“`Ruby:ターミナル
% source ~/.zshrc
“`
これでrbenv と ruby-buildをインストール部分は完成です。### readl
タイムスタンプを見ず、中身が変わっていたらビルドする
# これは何?
先日のツイート
私もそういうの作りたいなとちょっと思ってました。
前回ビルドしたときとハッシュが違っていたらビルドするんですよね。
やむを得ない事情で毎回生成されるけど殆どの場合前回と同じ内容のファイルとかがあると make 方式つらいですよね。— 鍋谷 武典 (@Nabetani) June 23, 2022
の実装。
# 状況
タイムスタンプが信用できないファイルが絡むビルドをしたいことがある。
* 手元で生成できるファイルが、 git でも管理されている
* 自動更新されるデータ(スクレイピングの結果からの抽出物とか)をソースにするなど。
具体的には、たとえばとこんな rakefile(抜粋)があったとしよう。
“`ruby:rakefile
file “generated/cooked.json” => “hoge.json” do |a|
cook_json( a.sources, a.name )
end
“``hoge.json` をなんか処理して、 `cooked.json` を作っている。
`cooked.json` 自体はそんなに大きくはない。しかし、なにかわからない事情によって `hoge.json` または `cooked.json` のタイムスタンプは信用できないので、上記の `rakefi
日付系のメモ
日付実装する時に参考にしたサイト
世の中には文章力のある国語マンのイイ人がたくさんいますね。https://qiita.com/nao0725/items/409ece34ecbec5167125
https://qiita.com/ryouzi/items/950401a3d6032bd5641d
https://railsdoc.com/page/date_related
https://fuchiaz.com/ruby-rails-time-date/#Date
なんであんなに長文打てるのだろう
指先が腱鞘炎になるので、文字数少なめにメモしていきます…/(◉〜◉)
7日間の投稿をグラフ化 ~application.jsファイルが大事~
★基本的には先駆者の方のサイトを見れば大半はできます!
ほぼ出来ていると思うんですが、中々グラフが表示されなかったので、メモとして残します。↓↓↓素敵な先駆者のサイトはこちら(いつもめっちゃわかりやすくて助かってます!!!)↓↓↓
https://qiita.com/ki_87/items/37e9f42c118f87416aa6
但し、記述を丸パクリしてもグラフが出現せず
こんな感じにしたいのに、、、otz![スクリーンショット 2022-06-26 15.05.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2717077/f1f73124-92bf-4636-e91d-f0bb34978545.png)
gemのインストールは間違っていないと思ったので、怪しいなぁーって思っていた
「application.js」ファイルで検索をかけたところ、、、
“`
import Chart from ‘chart.js/auto’;
import jQuery from “jquery
[ruby] [paiza] 配列を扱う上での個人的な小ステップアップ
### はじめに
最近paizaをはじめました
完全なる初心者ですがアウトプットを兼ねて投稿しています### 文字と整数の組のソート (paizaランク C 相当)の問題にて
**問題**
nに整数が入力され、その後n回分「文字」と「整数」の組が空白区切りで入力される
「整数」で昇順に並び替える“`ruby
n = gets.to_i
w = {}n.times do
line = gets.split(‘ ‘)
# ここが自分は使ってこなかった記述でした
w[line[1].to_i] = line[0]
endw = w.sort
w.each { |ele| puts ele[1] }
“`
いつもはこうしていました
“`ruby
n.times do |i|
w[i] = gets.split(‘ ‘)
# 中身=> {0=>[“A”, “1”], 1=>[“B”, “2”]}
end
“`
これだといらない数字も配列に入っちゃうため扱いにくかったのですが、
上の例の中身は`{1=>”A”, 2=>”B”}`になるので欲しかった情
【Rails】「<投稿内容>… 続きを見る」という部分を作る。(truncateの実装とminitestの追加)
# はじめに
記事投稿サイトでよく見る「<投稿内容>… 続きを見る」という部分を作りたい。
なので作る!!!
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
|4 | minitest| 5.11.3 |
|5| minitest-reporters| 1.3.8|
# 一覧表示テンプレートに文字数制限と”続きを見る”リンクを追加
truncateメソッドにより文字数制限をして表示する。
続きをみるはlink_toメソッドにより投稿の詳細ページ(showテンプレート)に飛ぶようにする。
“`app/views/microposts/index.html.erb
<%= trunc
グループ機能全般で利用できるサイト
★グループ作成実装-アソシエーションメイン! Viweは簡単!
https://qiita.com/ki_87/items/5add92e34c639fe13ef0
★グループへの入退会機能-ネストがメイン! Viewの記述に注意!
https://qiita.com/ki_87/items/eb2d073c2dccbed42c5a
★グループメンバーへのメール送信機能-全体的に難しい! 覚えるしかない!
〜実装時は↓こっちの方が良い!〜
https://qiita.com/ki_87/items/67f8965e8de17e95ac1c
〜解説重視なのは↓こっちの方が良い!〜
https://qiita.com/annaaida/items/81d8a3f1b7ae3b52dc2b
※どちらのページも素敵なまとめ方でした!!! Ψ(☆ω☆)Ψ
★環境変数についてのサイト! 簡単・便利!
https://qiita.com/ki_87/items/82b28f89a8552506a169
https://qiita.com/yuichir43705457/ite