Post slider

0

Witam, probuje napisac swoja aplikacje webowa w railsach.
Mam problem z bxsliderem, mam go ladnie umieszczonego na stronie, potrafie przekierowac dla odpowiedniego obrazka do postu o konkretnym ID, lecz potrzebuje, zeby kazdy nowy dodany post, w ktorym jest opcja dodania obrazka byla wyswietlona w tym sliderze i zeby byla ona na pierwszej pozycji, a ostatnia przechodzila do "najnowsze wiadomosci"
Czy ma ktos pomysl jak to zrobic? jezeli jest jakas mozliwosc zrobienia tego w javascripcie to poprosze o podpowiedzenie, reszte z railsow juz sobie "zaaplikuje" do kodu :)
Pozdrawiam.

Edit: cos takiego jak na stronie glownej http://giveawaybase.com/

0

Chyba nie rozumiem. Jeśli chodzi o sytuacje w której user jest na stronie, w tym czasie pojawia się nowy post i ma on pokazać się userowi bez przeładowania to musisz użyć ajax'a. Co jakiś czas (np. minute) wysyłasz ajaxowy request do serwera z pytaniem czy są nowe posty. Jeśli są serwer odpowiada Ci jakimś jsonem czy innym formatem z danymi typu link, jakiś link obrazka czy coś w ten deseń. Następnie przenosisz do najnowszych ostatni element tablicy (oczywiście dane z niej) a wszystkie przesuwasz o jedno miejsce i na pierwszym miejscu dajesz tn nowy.
Chyba że chodzi o sytuacje w której przy odświeżeniu strony ma się pokazać nowy post jeśli istnieje. Wtedy musisz w backendzie wygenerować ten slider.

0

Tak jak napisałem musisz w backendzie wygenerwać odpowiedni html.
Kod w railsach (chyba będzie działał, chociaż 1 raz w życiu piszę coś w ruby)
Kontroller

@posts = Posts.find(3) //Nie wiem co ma być żeby pobrało 3 ostatnie

Widok

<ul class="slider">
  <% @posts.each do |post| %>
  <li>
    <a href="link_id=<%= post.id%>">
      <img stc="<%= post.image_link%>">
    </a>
  </li>
  <% end %>
</ul>
0

To moj plik html:

  • <script type="text/javascript"> $(document).ready(function(){ $('.bxslider').bxSlider(); }); </script><% @posts.each do |post| %>
  • "> kicius.jpg <% end %>
logowaniex`

A to moj kontroler:
class PostsController < ApplicationController
before_action :set_post, only: [:show, :edit, :update, :destroy]

GET /posts

GET /posts.json

def index
@posts = Post.all
end

GET /posts/1

GET /posts/1.json

def show
end

GET /posts/new

def new
@post = Post.new
end

GET /posts/1/edit

def edit
end

POST /posts

POST /posts.json

def create
@post = Post.new(post_params)

respond_to do |format|
  if @post.save
    format.html { redirect_to @post, notice: 'Post was successfully created.' }
    format.json { render :show, status: :created, location: @post }
  else
    format.html { render :new }
    format.json { render json: @post.errors, status: :unprocessable_entity }
  end
end

end

PATCH/PUT /posts/1

PATCH/PUT /posts/1.json

def update
respond_to do |format|
if @post.update(post_params)
format.html { redirect_to @post, notice: 'Post was successfully updated.' }
format.json { render :show, status: :ok, location: @post }
else
format.html { render :edit }
format.json { render json: @post.errors, status: :unprocessable_entity }
end
end
end

DELETE /posts/1

DELETE /posts/1.json

def destroy
@post.destroy
respond_to do |format|
format.html { redirect_to posts_url, notice: 'Post was successfully destroyed.' }
format.json { head :no_content }
end
end

private
# Use callbacks to share common setup or constraints between actions.
def set_post
@post = Post.find(params[:id])
end

# Never trust parameters from the scary internet, only allow the white list through.
def post_params
  params.require(:post).permit(:tytul, :tresc)
end

end

Problem teraz mam taki, ze dziala mi slider, gdy klikne to przechodzi mi do posta najnowszego, ale kazdy kolejny slider to post zaczynajacy sie od najstarszego posta.
Kolejny problem to, ze kazdy dodany post rowna sie z dodaniem slajda do slidera, a maja byc maksymalnie 3
No i na razie to wszystko.

0

Wiec tak. Po 1 nie wiem jak ma Ci to działać skoro w pętli @(posts.each do |post|) nie wyświetlacz żadnych danych. Chyba że coś Ci ucielo kawałek kodu, albo na telefon się jakoś dziwnie wyświetla. Po 2, jeśli będziesz miał 100 postów dla każdego będziesz pisał metody? Wpisz w Google routing ruby on rails. Po 3 masz tak w kodzie to się nie dziw. W 7 link masz @posts = Post.all wpisz w Google ruby on rails model i poczytaj jak pobierać konkretne dane. A najlepiej zanim zrobisz to wszystko napisz tu, na forum co robi każda linijka. Bo pobrales sobie skąś kod i nie wiesz kompletnie co on robi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1