20211015のRubyに関する記事は4件です。

collectionとmemberについて!

①.結論! collectionとmemberは、ルーティングを設定する際に使用でき、生成されるURLとコントローラーを 任意にカスタムできるメソッドのことです! collectionはルーティングに:idがつかない! memberは:idがつくという違いがあります! 1つずつ使用例を見ていきましょう! ②.collection collectionで定義した場合は、以下のように例になります! routes.rb Rails.application.routes.draw do resources :eats do collection do get 'search' end end end collectionのルーティング Prefix Verb URI Pattern search_eats GET /eats/search(.:format) eats#search ルーティングに:idが付いていないことがわかります! 続いてmemberの場合を見てみましょう! ②member. routes.rb Rails.application.routes.draw do resources :eats do member do get 'search' end end end memberのルーティング Prefix Verb URI Pattern search_eat GET /eats/:id/search(.:format) eats#search URLの指定先が、collectionは:idなし、memberが:idありとなっていることが確認できます! 例のような検索機能の場合、詳細ページのような:idを指定して特定のページにいく必要がないため、 collectionを使用してルーティングを設定します! ③.まとめ 詳細ページなどidが必要な際はmember、必要ない時はcollectionと言う事ですね! ルーティングに対して、「このパスは可読性が高いか」などの視点も非常に大切だと思いました! collectionやmemberもしっかりと理解して行こうと思います! 何か説明で間違っていたらご指導お願い致します(_ _)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【個人開発】モノやサービスを供養できるアプリを作ってみた。

はじめに ・買ったばかりのスマホを落として画面バキバキになってしまった ・サポート終了になるInternetExplorer ・元カレのくれたプレゼント 「どうしよう…」 そのあと湧き上がる 「やり場のない気持ちをぶつけたい」 みなさんにもそんな時があると思います。 お世話になったモノやサービスに敬意を込めて供養してあげる。 とても慈悲深いアプリが出来ました。 サービス概要 投稿されたタイトルをクリックすると、専用のお墓に見立てた位牌が鎮座しています。 「御参り」ボタンを押すと黙祷タイムです。 きちんと御参りができればTwitterシェア出来ます。 シェアすることで他の方から気持ちを可視化したと気付いてもらうことができます。 ヘッダーからタイトル検索もできます。 こだわったポイント 1.見た目 「供養」と聞くと思い浮かぶのは大抵の場合ですと神社・仏閣・お墓でしょう。 そんな厳かなイメージを崩さないためにカラーは黒を基調としています。桜も舞います。 2.形態素解析 特定の人の名前が入ると色々と問題になる可能性があるので【人名】はタイトル部分で対象外としました。 mecabというgemと、mecab-ipadic-NEologdというmecabのシステム辞書を用いています。 また、辞書に登録されていない珍しい名前の方を除外するため別途でcsvファイル作成し読み込んでいます。 参考: https://qiita.com/sho-jp/items/50243956373f21b1e138 3.動的OGP出力 供養されたのが何なのかを分かるようにするために固定ではなく動的に反映される様にしました。 Cloudinaryを使っています。 参考: https://qiita.com/yuppymam/items/21a65d32fed9d7ecceba 今後実装したいこと 焼香か線香のlikeボタン 投稿のジャンル分け 主な技術 Ruby 2.7.3 Rails 6.1.4 JavaScript jQuery 主なGem cloudinary mecab natto pagy meta-tags rubocop おわりに 最後まで目を通していただきありがとうございました。 色々な方からアドバイスをいただけたり、一緒に考えてもらいながら作り終えることが出来ました。 本当に感謝しています。 これからも技術を追求してより良いアプリを作れるように頑張っていきます。 ありがとうございました。 twitter: https://twitter.com/Find_michi お盆に間に合わなかった為、きちんと供養しておきます。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Ruby】あと何日かを求める

環境 Ruby 3.0.2 前提 12月10日までに100記事目標にしている自分に対して、今の投稿進捗を教えてくれるbotに台詞を追加したい。 (実際のbotの書き方とは少し異なる) あと何日か、1日何記事ペースで書いたらいいのかをrubyで書くときに少し詰まったので記事に残す。 現在27記事投稿済み。 Date.todayは2021年10月15日とする。 完成形 require 'date' today = Date.today #2021年10月15日 limit = Date.new(2021, 12, 10) articles_count = 27 # 残りの日にちから土日祝の18日分を引く REMAINING_DAYS = (limit - today).to_i - 18.freeze PER_DAY = ((100 - articles_count) / REMAINING_DAYS.to_f).round(2).freeze p "本日までの記事投稿数は#{articles_count}記事になりました!!\n目標まであと#{100 - articles_count}記事、1日#{PER_DAY}記事ペースで目標達成!\n引き続きがんばれ〜!" 残り何日かを求める today = Date.today limit = Date.new(2021, 12, 10) REMAINING_DAYS = (limit - today).to_i p REMAINING_DAYS #=>56 to_iしないと分数の形になる REMAINING_DAYS = limit - today p REMAINING_DAYS #=>56/1
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

商品購入機能の実装 〜「商品購入ページへの遷移」の実装①〜

はじめに 先日、最終課題アプリ作成において「商品購入機能」の実装を開始しました。 最大のヤマ場といわれており、恐らく実装に時間がかかると思います。 そこで、これまで自身が学んできた内容や考えた過程などを、記事として残していこうと思います。駄文・長文になること請け合いですが、ご覧いただけると幸いです。 ただし、現時点での私の知識・技術についてはプログラミングという大海原に片足の親指を突っ込んでちょんちょん水面を揺らしている程度(だと思っている)ので、「それ、ちょっと間違っているよ!」というご指摘や、「こうした方がいいよ!」というご意見をいただけると、非っっっっっ常ありがたいです。泣きながら土下座して喜びます。 「商品購入ページへの遷移」の実装① とりあえず商品購入ページに遷移できないと始まらないだろ!!! ということで、商品購入ページへ遷移できるようにしました。 見本サイトの商品購入ページのURLを確認すると、 以下のとおりになっていました。 (省略)/items/○○/orders ここで気になったのが、items の後ろに orders と表示されること。 このような表記はこれまでの実装では見られなかったことから、 ordersモデル と itemモデルに対して、 これまでの機能の実装とは別の形で関連づける必要があると考えました。 belongs_to や has_many 、has_one などではないってことですね。 だとすれば、どのように関連づけようか。 ここで、神が舞い降りました。 items の後ろに orders が表示されているから、 itemsモデルが親、ordersモデルが子の関係になっているのでは??? 実際、この形の実装は他機能の実装ではありませんでした。 私が知っていて、かつこの関係に該当するものは、ルーティングのネスト。 早速、下記のとおりにルーティングを記述しました。 ネストとかしばらく使っとらんかったのによく思いついたな自分。 こんなの普段なら思いつかんのやけど。 routes.rb Rails.application.routes.draw do get 'articles/index' get 'articles/new' devise_for :users root to: "items#index" +++ resources :items do ##「do」のみ追加 +++ resources :orders, only: [:index, :create] ##ここを追加 end end 6行目 resources :items に対して「do」を追加したうえで、 7行目 resources :orders をネストしました。 これにより、これ以上テーブルを無駄に増やすことなく、 items と関連づけることができました。 また、現状必要そうなものとして、以下のアクションを追加しておきました。 商品一覧ページを表示させる → :index 購入機能を追加する → :create この後、ターミナルにてrails routesを行い、下のパスを取得できました。 item_orders GET /items/:item_id/orders(.:format) orders#index POST /items/:item_id/orders(.:format) orders#create あとはターミナルで rails g controller orders と入力してorders_controllerを作成し、 orders_controller.rb class OrdersController < ApplicationController def index end def create ##商品購入ページに遷移するだけなら不要 end ##商品購入ページに遷移するだけなら不要 private ##商品購入ページに遷移するだけなら不要 end と記述しました。 その結果、商品詳細ページからURLで直接「/orders」を追加入力することで、 商品購入ページを表示することができました。 「は???リンクから遷移できなきゃでしょ」ってツッコミはやめて! そこ詰まってるところなの!!!(汗) belongs_to や has_many 、has_one でのモデルの関連づけはよくありましたが、 それ以外の方法を…と考えた時、ネストが思い浮かんだのは奇跡でした。 「自分すげーな!!!」ってなりました(笑) 奇跡ではなく、ちゃんと力がついてきているんだと思えるように、 以後の実装も頑張っていきたいと思います! 最後までお付き合いいただき、ありがとうございました?
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む