はじめに
日ごとに投稿を1つのリンクにまとめ、その遷移先にその日の投稿がまとまったページを作成する方法を伝授します!
コピペだけで実装できます!
(※実装しているものと若干合わせる必要はあると思います🙏)
コントローラー
posts_controller.rb
class TweetsController < ApplicationController
def index
@tweet = Tweet.new
@days = Tweet.group("date(created_at)")
end
def create
tweet = Tweet.new(tweet_params)
if tweet.save
redirect_to :action => "index"
else
redirect_to :action => "index"
end
end
def show
@date = params[:date]
@tweets = Tweet.where("created_at LIKE ? ",'%' + params[:date] + '%')
end
private
def tweet_params
params.require(:tweet).permit(:body)
end
end
ルート
routes.rb
root "tweets#index"
post 'tweets' => 'tweets#create'
get 'tweets/:date' => 'tweets#show',as: 'tweet'
ビュー
index.html.erb
<h1>投稿する</h1>
<%= form_for @tweet do |f| %>
<div class="field">
<%= f.label :body %>
<%= f.text_field :body, :size => 140 %>
</div>
<%= f.submit "Tweetする" %>
<% end %>
<h1>日付一覧</h1>
<div class="tweets-container">
<% @days.each do |t| %>
<a href="/tweets/<%= t.created_at.to_date %>"><%= t.created_at.to_date %></a><br>
<% end %>
</div>
show.html.erb
<h1><%= @date %>の投稿</h1>
<% @tweets.each do |t| %>
<div class="tweet">
<%= t.body %>
</div>
<% end %>
最後に
いかがでしたでしょうか?
解説は余力があれば追記していこうと思います!
そのほか何かありましたら気軽になんでもコメントいただければと思います!