У меня есть сайт для просмотра/обсуждения книг и вы хотите заказать все книги пользователей на странице своего профиля, основываясь на том, что они сейчас читают эту книгу. Я добавил колонку в модель книги, которая называется current, и когда пользователи добавляют книгу, они могут проверить поле, в котором говорится: «Я сейчас читаю это». Если пользователь нажимает на поле, тогда у объекта книги есть атрибут: current со значением «1». Если они не нажимают на поле, то значение: current равно «0».сортировать по атрибуту модели в контроллере в пользовательском шоу
На мой взгляд, у меня есть этот код, чтобы рассказать пользователю, какие книги они в настоящее время читают, и он отлично работает.
<% if book.current == "1" %>
<h4>I am currently reading this book</h4>
<% end %>
Однако в контроллере моего дисплея я не могу заставить его заказывать объекты, связанные с: текущим статусом.
Вот что я пробовал:
def show
@user = User.find_by_id(params[:id])
@books= Book.all.sort { |p1, p2| p1.current <=> p2.current }
end
и
def show
@user = User.find_by_id(params[:id])
@books = Book.all
@books = @books.order(:current)
end
и
def show
@user = User.find_by_id(params[:id])
@books = Book.all
@books = @books.order(current: :desc)
end
и, просто чтобы убедиться, что он идет в правильном направлении
def show
@user = User.find_by_id(params[:id])
@books = Book.all
@books = @books.order(current: :asc)
end
Отсутствует работа. И, никто не бросает ошибок, они просто не сортируют его. «Текущая» книга, которая является последней, а не первой. Вот код, который отображает и отбирает книги пользователей. Этот код также отлично работает.
<% @user.books.each do |book| %>
<% if params[:id].to_s == book.user_id.to_s %>
<ul class="profileDisplay" >
<img alt="Book Jacket" class="homepageImages" src=<%= book.image %> >
<% if book.current == "1" %>
<h4>I am currently reading this book</h4>
<% end %>
<p><b>Contributor: </b><%= book.user.name %></p>
<p><b>Title: </b><%= book.title %></p>
<p><b>Author: </b><%= book.author %></p>
<p><b>Genre: </b><%= book.genre %></p>
<p><b>Publication Date: </b><%= book.publication_date %></p>
<p><b>Publisher: </b><%= book.publisher %></p>
<p><b>Synopsis: </b><%= book.synopsis %></p>
<% if params[:id] == session[:user_id].to_s || params[:action] == "profile" %>
<%= button_to "Edit Book", book_edit_path(book.id), method: "get", class: "btn btn-primary col-xs-2" %>
<%= button_to "Delete Book", delete_book_path(book.id), method: :delete, data: {confirm: "Are you sure you want to delete this book and all it's reviews?"}, class: "btn btn-danger col-xs-2" %>
<% end %>
</ul>
<% end %>
<% end %>
работал! спасибо, и с этим таким образом я могу заставить пользователя проверить вид, который я пытался реализовать, когда я это сделал, но не мог понять. Еще раз спасибо! – nwimmer123