From ab7d3f69a4cd062a9bbf6e9679d250fee02534b4 Mon Sep 17 00:00:00 2001 From: Toks Date: Tue, 17 Sep 2013 15:51:41 -0400 Subject: [PATCH] #1938: Add random post link --- app/controllers/posts_controller.rb | 6 ++++++ app/views/posts/partials/index/_related.html.erb | 2 ++ app/views/posts/partials/show/_options.html.erb | 1 + config/routes.rb | 1 + 4 files changed, 10 insertions(+) diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index 07dd0b6cd..e53509cc2 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -112,6 +112,12 @@ class PostsController < ApplicationController end end + def random + count = Post.fast_count(params[:tags]) + @post = Post.tag_match(params[:tags]).offset(rand(count)).first + redirect_to post_path(@post, :tags => params[:tags]) + end + private def tag_query params[:tags] || (params[:post] && params[:post][:tags]) diff --git a/app/views/posts/partials/index/_related.html.erb b/app/views/posts/partials/index/_related.html.erb index 0632bae0e..9ec07248c 100644 --- a/app/views/posts/partials/index/_related.html.erb +++ b/app/views/posts/partials/index/_related.html.erb @@ -8,5 +8,7 @@ <% if @post_set.is_tag_subscription? %>
  • <%= link_to "Edit subscriptions", tag_subscriptions_path %>
  • <% end %> + +
  • <%= link_to "Random post", random_posts_path(:tags => params[:tags]) %>
  • diff --git a/app/views/posts/partials/show/_options.html.erb b/app/views/posts/partials/show/_options.html.erb index 01312fa08..622847249 100644 --- a/app/views/posts/partials/show/_options.html.erb +++ b/app/views/posts/partials/show/_options.html.erb @@ -3,6 +3,7 @@
  • <%= link_to "Favorite", favorites_path(:post_id => post.id), :remote => true, :method => :post, :id => "add-to-favorites", :title => "Shortcut is F" %>
  • <%= link_to "Unfavorite", favorite_path(post), :remote => true, :method => :delete, :id => "remove-from-favorites" %>
  • <%= link_to "Edit", "#", :id => "side-edit-link" %>
  • +
  • <%= link_to "Random post", random_posts_path(:tags => params[:tags]) %>
  • <%= link_to "Add to pool", "#", :id => "pool" %>
  • <% if post.is_note_locked? %>
  • Note locked
  • diff --git a/config/routes.rb b/config/routes.rb index d42eb5f24..c2a86084a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -156,6 +156,7 @@ Danbooru::Application.routes.draw do resources :votes, :controller => "post_votes", :only => [:create, :destroy] collection do get :home + get :random end member do put :revert