目的
これの続き
投稿した値をテーブルに追加できるようにします。
今回やること
今回の目標は以下の2つ。
- アクションの設定
- 遷移リンクを記載する
- 詳細画面を作る
環境
- windows 10
- ruby 3.0.4
- rails 6
- Bootstrap 5.0.2
いざ出陣
アクションの設定
以下のようにアクションを設定します。
app\controllers\communities_controller.rb
class CommunitiesController < ApplicationController
def index
end
def new
@community = Community.new
end
# 以下を追加
def create
community = Community.new(community_params)
if community.save
redirect_to :action => 'show', :id => community.id
else
redirect_to :action => "new"
end
end
def show
@community = Community.find(params[:id])
end
private
def community_params
params.require(:community).permit(:eventname)
end
# ここまで
end
投稿を押すと、 create
に飛んで、 save
が成功したらその詳細画面へ、失敗したらもう一度作成画面に飛びます。
詳細画面にはidが必要なので、 :id => community.id
で投稿されたレコードのIDを取得しています。
他はまぁ、見たまんまです。オブジェクトがどうとか細かいことは分かりません。
詳細画面の作成
投稿した後に詳細画面へ飛ぶため、詳細画面を作成します。
app → views → communities に show.html.erb
を作成し、以下のように書きます
app\views\communities\show.html.erb
<div class="container">
<p><%= @community.eventname %></p>
<p><%= @community.created_at %></p>
</div>
<%= link_to "マイページに戻る", users_path %>
これは、上のアクションで設定した show
で @community = Community.find(params[:id])
としているので、 @community.eventname
で投稿内容、 @community.created_at
で投稿時間を表示できます。
・投稿画面
「作成する」押下後
遷移ばっちり✨
余談
画面をBootstrapできれいにするのは後でしようと思ったのだけど、
よく考えたらせっかく class の指定できれいになるっていうのにもったいないね。
private
がどの程度ばれちゃいけないものなのか分かんない。
たとえば、このサイトをリリースしたら見られない方が良いものなんでしょうか...
次から省略しよ。