2016-08-06 4 views
2

編集私は、以前のクリックを試みたが、それはまだページ付けされていなかったときに何が起こる以前と次のデータトグルのみ、既にページ分割されている写真では動作し

? Herokuにはエラーやメッセージはありません。それは何かを返しますか?私の前の方法は、前のリンクがあれば、確実にもっと写真があるということです。

私のモーダルの前と次のボタンは、改ページされた写真の最後まで表示されます。たとえば、per_pageの9枚の写真があります。私が写真の最初のページにいて、最後の写真の前をクリックすると、10番目の写真は開きません。リンクは正しいですが、モーダルはコントローラによってまだページが設定されていないため写真を開きません。

show.html.erb

<% @photos.in_groups_of(3, false).each do |group| %> 
    <div class="row instagram"> 
     <% group.each do |photo| %> 
     <a data-toggle="modal" href=<%="#"+"#{photo.id}"%>> 
      ... 
     <div class="modal" id=<%="#{photo.id}"%> tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel"> 
     ... 
     <a class="modaldirection" data-dismiss="modal" data-toggle="modal" href=<%="#"+"#{photo.previous_modal.id}"%>> 

クラス写真<はActiveRecord ::ベース

def previous_modal 
    if self.class.where("id < ?", id).last == nil 
    return self 
    else 
    return self.class.where("id < ?", id).last 
    end 
end 

クラスがUserController

def show 
    @user = User.find(params[:id]) 
    @photos = @user.photos.approved.order('created_at desc').paginate(page: params[:page], per_page: 9) 
    respond_to do |format| 
     format.html 
     format.js 
    end 
end 
+0

これは、すべての '@写真 'を表示するギャラリーになるはずですか?なぜ3つのグループを作るのですか?通常、ギャラリーを作成するときに、サーバー上ですべての写真のリストを出力し、JavaScriptを使用してインタラクティブギャラリーにします。 – mb21

+0

@ mb21それ以外の場合は、col-4としてページ付けする必要があります。私はこのコードをしばらく前に書きましたが、それには理由がありました。私はそれが写真に改ページするためにレールを使用している場合、それが質問に影響するとは思わない。あなたはJsでURL写真のフロントエンドをすべて行うことを提案していますか? –

答えて

0

私はこの質問をよく理解していません。しかし、通常、ギャラリーを作成するときに、サーバー上のすべての写真のリストを出力します。

<div class="galleria"> 
<% @photos.each do |photo| %> 
    <%= image_tag photo %> 
<% end %> 
</div> 

... JavaScriptを使用してインタラクティブギャラリーにします。たとえば、Galleriaを使用して:

<script> 
    Galleria.loadTheme('galleria/themes/classic/galleria.classic.min.js'); 
    Galleria.run('.galleria'); 
</script> 
関連する問題