Ruby on Rails まとめ②

投稿ページ作成

①ルーティングを記載

config/routes.rb 編集

Rails.application.routes.draw do
 get 'posts', to: 'posts#index'
# 新規投稿ページを表示するリクエストに対応
 get 'posts/new', to: 'posts#new'
end

②コントローラーを設定

app/controllers/posts_controller.rb
 
# index下に追記
 def new
 end

③ビューファイル作成

app/views/posts/new.html.erb を作成。

<h1>新規投稿ページ</h1>

④ブラウザで確認
http://localhost:3000/posts/new

ヘルパーメソッド

主にviewでHTMLタグを出現させたりテキストを加工するために予め用意されたメソッド。複雑なアプリケーションでは、コードがシンプルになる。
フォームでは、使用しないとセキュリティ上の問題が発生する。

form_tag      投稿ページなどにおけるフォームの実装
link_to       リンクの実装
simple_format  投稿した文章を自動で見やすく整形する
# HTMLのみでのフォーム記述

<form action="/posts" method="post">
 <input type="text" name="content">
 <input type="submit" value="投稿する">
</form>


# ヘルパーメソッドを用いたフォーム記述

<%= form_tag('/posts', method: :post) do %> 
 <input type="text" name="content"> 
 <input type="submit" value="投稿する"> 
<% end %>

上記フォームの解説

/posts         ルーティングのURIパターン。
method: :post    HTTPメソッド。
do と end     の間がフォームですよと指定している。
type="text"     はテキストを入力するタイプのフォームを指定。
name="content"  は入力された文字列が、どのような名称で扱うか指定。
type="submit"   送信ボタン
value="投稿する" 送信ボタンに入るメッセージを指定
・typeの例
type="text"    1行テキストボックス
type="password"  パスワード入力ボックス
          (アスタリスクなどに置き換えて表示される)
type="checkbox"  チェックボックス(複数選択可能)
type="radio"    ラジオボタン(複数の中から一つしか選択できない)
type="submit"    送信ボタン

・link_to メソッド

<%= link_to 'リンクに表示する文字', 'リンク先のURL' %>
app/views/posts/index.html.erb に追記。

# indexからnewに遷移。
<%= link_to '新規投稿', '/posts/new' %>

投稿する

①ルーティングを記載

config/routes.rb 編集

Rails.application.routes.draw do
 get 'posts', to: 'posts#index'
 get 'posts/new', to: 'posts#new'
# データの投稿を行うリクエストに対応
 post 'posts', to: 'posts#create'
end

②コントローラーを設定
・params
サービス利用者がサーバに対して送る値を格納するための箱。

・ストロングパラメーター
指定したキーを持つパラメーターのみを受け取るようにする。

【例】

def post_params
 params.permit(:キー名, :キー名)  # 受け取りたいキーを指定
end

・プライベートメソッド
クラス外から呼び出すことのできないメソッド。Classの外部から呼び出されてしまうとエラーを起こすメソッドもある。エラーを事前に防ぐ。

【例】

 private
 def private_method  # プライベートメソッド
   (処理)
 end
app/controllers/posts_controller.rb
 
# new下に追記。()には、実際にテーブルに登録したいデータを記載。
 def create
   Post.create(post_params)
 end

 private
 def post_params
   params.permit(:content)
 end

③ビューファイル作成

app/views/posts/create.html.erb を作成。

<h1>投稿完了!!</h1>
<%= link_to 'トップページに戻る', '/posts' %>




この記事が気に入ったらサポートをしてみませんか?