2016-07-11 3 views
0

Так что я хочу сделать, чтобы иметь ссылку, которая показывает самые последние сообщения и ссылку, которая показывает наиболее понравившуюся или наиболее просматриваемую запись и так далее. Я знаю, как изменить его для всего моего приложения, зайдя в мой пост управления и, напримерСообщения в разных заказах на разных страницах

def index 
@posts = Post.sort_by_popularity('DESC') 
end 

Это сортирует мои сообщения самых просматриваемых. Но снова он делает это для всего моего приложения. И снова я хочу иметь ссылки, в которых мои сообщения отсортированы по-разному для этих страниц. Может кто-то помочь мне в этом. Im использованием Rails 4 по пути

Это то, что пытался Ive, но до сих пор никаких изменений

def index 
@posts = Post.all.order("created_at DESC") 
if params[:sort_param] == "views" 
    @posts = Post.sort_by_popularity('DESC') 

    elsif params[:sort_param] == "likes" 
    @posts = Post.all.order(:cached_votes_up => :desc) 
end 
end 

Мои ссылки на мой взгляд

<li><%= link_to 'like', posts_path(:sort_param => "Most likes")%></li> 
<li><%= link_to 'views', posts_path(:sort_param => "Most views")%></li> 
+0

вы можете создать методы класса для ваших различных сортировок, а затем вызывать эти методы в своих действиях контроллера на основе некоторых параметров сортировки – titan

ответ

1

Вы можете передать parameter методу index сортировать :

def index 
    if params[:sort_param] == "Like" 
    // do something 
    elsif params[:sort_param] == "date" 
    // do something 
    else 
    @posts = Post.all.order("created_at DESC") 
    end 
end 

ввиду

%h3 Sort by: 
= link_to 'Like', posts_path(:sort_param => "like") 
%br 
= link_to 'Date Updated', posts_path(:sort_param => "date") 
+0

Хорошо спасибо. Итак, мой индекс def должен выглядеть примерно так? Я быстро отредактировал свой вопрос, чтобы узнать, правильно ли я нахожусь на том, что вы говорите. –

+0

@ D.Graves. Да, вы на правильном пути. Является ли 'cached_votes_up' именем столбца на вашей модели' post'? Кроме того, присвойте результат переменной экземпляра, например '@ posts' – Emu

+0

Вы имеете в виду таблицу posts в схеме? Потому что я в этом. Но sort_by_popularity (views) - нет. –

Смежные вопросы