現状
投稿したものを評価・投稿順に並べ替えたいのですが、うまくいきません。
やったこと
モデル、コントローラー、ビューそれぞれに以下の記述をしました。
モデル
rails
1 scope :latest, -> {order(created_at: :desc)} 2 scope :old, -> {order(created_at: :asc)} 3 scope :rating, -> {order(star: :desc)} 4 scope :rating_bad, -> {order(star: :asc)}
コントローラー
rails
1def index 2 if params[:latest] 3 @books = Book.latest 4 elsif params[:old] 5 @books = Book.old 6 elsif params[:rating] 7 @books = Book.rating 8 elsif params[:rating_bad] 9 @books = Book.rating_bad 10 else 11 @books = Book.all 12 end
ビュー
rails
1 <p> 2 <%= link_to "新しい順", books_path(latest: "true"), class: "btn btn-success" %> 3 | <%= link_to "古い順", books_path(old: "true"), class: "btn btn-info" %> 4 | <%= link_to "評価の高い順", books_path(rating: "true"), class: "btn btn-dark" %> 5 | <%= link_to "評価の悪い順", books_path(rating_bad: "true"), class: "btn btn-warning" %> 6 </p>
なぜ表示が変わらないか??
細かなところやターミナルも見ましたが、間違っているところが見つけられません。
そもそもまだ記述することがあるのでしょうか、、、
また、サーバーの再起動は実施済みです。
分かる方いらっしゃいましたら、ご教授いただければ幸いです。
> うまくいきません。
何をどのように確認しましたか?
知識0から学習のために作成しています。
そのため、この機能を実装するにあたり様々な記事を参考にさせていただき実装しました。
他にも方法があるようですが、今回はscopeとorderを使って実装しています。
その中で、自分の知識と調べた上で記述したコードの間違いが不明であるため質問させていただいております。
> 自分の知識と調べた上で記述したコードの間違いが不明であるため
何がどのような結果を返しているのを見て、「間違っている」と判断しましたか?
「間違い」といった言い方は不適切かもしれませんね、、、
参考にさせていただいたコードを記述した結果、本来作動する機能が作動しないため、私のコードのどこかに不具合があると判断しました。(参考にして書いたコードは間違っていないかもしれません→関連しうるコードは載せるべきですね)
私が知りえる範囲では、ターミナルにもコンソールにも機能が動かない原因は見られませんでした。
一覧を表示するコードはどのように書いていますか?
こちらが投稿一覧のコードです。
<p id="notice"></p>
<div class="container px-5 px-sm-0">
<div class="row">
<%= render "users/user", user: @user, book: @book %>
<div class="col-md-8 offset-md-1">
<h2>Books</h2>
<p>
<%= link_to "新しい順", books_path(latest: "true"), class: "btn btn-success" %>
| <%= link_to "古い順", books_path(old: "true"), class: "btn btn-info" %>
| <%= link_to "評価の高い順", books_path(rating: "true"), class: "btn btn-dark" %>
| <%= link_to "評価の悪い順", books_path(rating_bad: "true"), class: "btn btn-warning" %>
</p>
<table class="table table-hover table-inverse">
<thred>
<tr>
<th></th>
<th>Title</th>
<th>Opinion</th>
<th colspan="3"></th>
</tr>
</thred>
<tbody>
<% @books.each do |book| %>
<tr>
<td><%= link_to image_tag(book.user.get_profile_image(100,100)), user_path(book.user) %></td>
<td><%= link_to book.title, book_path(book.id) %></td>
<td><%= book.body %></td>
<td>
<div class="star-group">
<div class="detail-rating", id="book-rat-<%= book.id %>"></div>
<div class="eval-star"><%= book.star %>/5点</div>
<%= render "raty2", book: book %>
</div>
</td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
</div>
回答1件
あなたの回答
tips
プレビュー