前提・実現したいこと
現在Ruby on Rails で本に評価をつけて投稿するシステムを作っており
本の一覧ページ(books#index)で本を「新しい順」と「評価の高い順」に並び替えるボタンを作りたいです。(元々本は古いものから順(降順)に並んでおります)
選択後は元居たページに遷移させたいです。
発生している問題・エラーメッセージ
該当のソースコード
_index.html.erb
<table class='table table-hover table-inverse'> <thead> <%= link_to '新着順', books_path(created_at: "true") %> <%= link_to '評価順', books_path(evaluation: "true") %> <tr> <th></th> <th>Title</th> <th>Opinion</th> <th colspan="3"></th> </tr> </thead> <tbody> <% books.each do |book| %> <tr> <td><%= link_to user_path(book.user) do %> <%= attachment_image_tag(book.user, :profile_image, :fill, 50, 50, fallback: "no-image-icon.jpg") %> <% end %> </td> <td><%= link_to book.title, book_path(book), class: "book_#{book.id}" %></td> <td><%= book.body %></td> <td class="favorite-btn"><%= render "favorites/favorite-btn", book: book %></td> <td>コメント数: <%= book.book_comments.count %></td> <td class="book-evaluation" data-score="<%= book.evaluation %>"></td> </tr> <% end %> </tbody> </table> <script> $('.book-evaluation').raty({ readOnly: true, score: function() { return $(this).attr('data-score'); }, path: '/assets/' }); </script>
books_contoroller.rb
class BooksController < ApplicationController helper_method :sort_column, :sort_direction before_action :authenticate_user! before_action :ensure_correct_user, only: [:edit, :update, :destroy] def show @book = Book.find(params[:id]) @book_comment = BookComment.new end def index @books = Book.all.order(evaluation: :desc) @book = Book.new end def create @book = Book.new(book_params) @book.user_id = current_user.id if @book.save redirect_to book_path(@book), notice: "You have created book successfully." else @books = Book.all render 'index' end end def edit end def update if @book.update(book_params) redirect_to book_path(@book), notice: "You have updated book successfully." else render "edit" end end def destroy @book.destroy redirect_to books_path end private def book_params params.require(:book).permit(:title, :body, :evaluation) end def ensure_correct_user @book = Book.find(params[:id]) unless @book.user == current_user redirect_to books_path end end end
試したこと
まったくわからないので上記のソースコードの
<%= link_to '新着順', books_path(created_at: "true") %>
<%= link_to '評価順', books_path(evaluation: "true") %>
部分のようにしてみましたが、上手くいくはずもありませんでした。
Ransackも試そうと試みましたが検索のみでしか使えないのでしょうか。
補足情報(FW/ツールのバージョンなど)
ruby バージョン:2.6.3p62
Rails バージョン: 5.2.6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/04 00:26
2021/11/04 04:26
2021/11/05 13:34