2016-01-10 3 views
-2
class PhootosController < ApplicationController 

before_action :logged_in_user 

def index 
    @phootos = Phooto.all.sample(1) 
end 

def new 
end 

def show 
    @phooto = Phooto.find(params[:id]) 
end 

def create 
    @phooto = current_user.phootos.build(phooto_params) 
    if @phooto.save 
    flash[:success] = "Photo created!" 
    redirect_to uploads_url 
    else 
    redirect_to root_url 
    end 
end 

def favorite 
    @phooto = Phooto.find params[:id] 

    if request.put? 
    current_user.favorites << @phooto 
     redirect_to :back, notice: 'You successfully favorited #{@phooto.name}' 
    elsif request.delete? 
    current_user.favorites.delete(@phooto) 
     redirect_to :back, notice: 'You successfully unfavorited #{@phooto.name}' 
    else 
     redirect_to :back, notice: 'Nothing happened.' 
    end  
end 

def feed 
    @favorites = current_user.favorites.all 
end 

def uploaded 
    @phootos = current_user.phootos.all 
end 

    private 

def phooto_params 
    params.require(:phooto).permit(:picture) 
end 
end 

show.html.erbРельсы: загрузка изображений. Главная страница

<p><strong>Picture:</strong></p> 

<%= image_tag(@phooto.picture) %> 

<%= link_to("< Previous", @phooto.previous) if @phooto.previous %> 
<%= link_to("Next >", @phooto.next) if @phooto.next %> 

<% if current_user %> 
<%= link_to "favorite", favorite_phooto_path(@phooto), method: :put %> 
<%= link_to "unfavorite", favorite_phooto_path(@phooto), method: :delete %> 

<% end %> 

www.example.com/photos/1  

Профессиональные сайты имеют нагрузку домашнюю www.example.com с фотографией уже отображается. Затем, когда вы нажимаете следующую/предыдущую, вы направляетесь на www.example.com/photos/#{photo_id}

Как мне получить мой сайт для этого? Я также хочу, чтобы он настраивался так, чтобы каждый день на домашней странице показывалось другое случайное фото.

+0

Похоже, у вас уже есть ?? –

ответ

0

Если вы хотите, чтобы показать случайную фотографию на странице, вам необходимо следующее:

#config/routes.rb 
resources :photos, only: [:index, :show] 

#app/controllers/photos_controller.rb 
class PhotosController < ApplicationController 
    def index 
     random = ActiveRecord::Base.connection.adapter_name == 'MySQL' ? "RAND()" : "RANDOM()" 
     @phooto = Photo.order(random).first 
    end 

    def show 
     @phooto = Photo.find params[:id] 
    end 
end 

Refs:

-

Это позволит вам заполнить переменную @phooto как в действиях index, так и show;

#app/views/photos/index.html.erb 
<%= render @phooto %> 

#app/views/photos/show.html.erb 
<%= render @phooto %> 

#app/views/photos/_photo.html.erb 
<p><strong>Picture:</strong></p> 

<%= image_tag(photo.picture) %> 

<%= link_to("< Previous", photo.previous) if @phooto.previous %> 
<%= link_to("Next >", photo.next) if @phooto.next %> 

<% if current_user %> 
    <%= link_to "favorite", favorite_phooto_path(phooto), method: :put %> 
    <%= link_to "unfavorite", favorite_phooto_path(phooto), method: :delete %> 
<% end %> 

Вы сможете решить все остальное.


Что касается рендеринга нового случайного изображения каждого дня , вы должны будешь хранить «случайное» Value каждый раз при смене дня.

Это было бы лучше всего сделать с cron job, Вызов rake task:

#lib/tasks/new_random.rb 
namespace :random do 
    task :generate => :environment do 
     # save random for the day (maybe in a model or redis) 
    end 
end 
Смежные вопросы