2013-03-13 26 views
0

在每個用戶配置文件(本地主機:3000 /用戶/用戶名)上,都列出了用戶所發佈的帖子。我實現了facebox,這是一個基於jQuery的燈箱,當點擊時顯示圖像。這是我使用的代碼:如何個性化每個帖子? (Ruby on Rails)

<a href=<%= post.image_url %> rel="facebox"><%= image_tag post.image_url(:thumb).to_s %></a> 

的問題是,如果一個用戶取得了5個員額,相同的圖像重複5次點擊時在facebox顯示。

這是我show.html.erb在那裏我@posts

<% provide(:title, @user.name) %> 
<div class="row"> 
    <aside class="span4"> 
    <section> 
     <h1> 
     <%= gravatar_for @user %> 
     <%= @user.name %> 
     </h1> 
    </section> 
     <br> 
    </aside> 
<br> 


    <div class="span10"> 
    <%= render 'follow_form' if signed_in? %> 
    <% if @user.posts.empty? %> 
<h3>Browse</h3> 
<% end %> 
    <% if @user.posts.any? %> 
     <ol class="posts"> 
     <%= render @posts %> 

     </ol> 

     <%= will_paginate @posts %> 
    <% end %> 
    </div> 
</div> 

渲染和這裏的_post.html.erb

<script src="/jquery.js" type="text/javascript"></script> 
<link href="/src/facebox.css" media="screen" rel="stylesheet" type="text/css"/> 
<script src="/src/facebox.js" type="text/javascript"></script> 
<script language="javascript"> 

jQuery(document).ready(function($) { 
    $('a[rel*=facebox]').facebox() 
}) 

</script> 


    <li> 
     <span class="content"><%= simple_format(post.content) %></span> 
     <% if post.image.present? %> 
     <a href=<%= post.image_url %> rel="facebox"><%= image_tag post.image_url(:thumb).to_s %></a> 
     <br> 
     <% else %> 
     <% end %> 
     <span class="timestamp"> 
     Posted <%= time_ago_in_words(post.created_at) %> ago. 
     </span> 
</li> 
+2

什麼錯誤? – 2013-03-13 18:54:28

+0

沒有錯誤,但是當我單擊圖像以在彈出窗口(facebox腳本)中顯示圖像時,會重複相同的圖像,這與用戶擁有的帖子數量相關。因此,如果用戶有11個帖子,點擊時的圖像會在一個彈出窗口中重複11次 – user2159586 2013-03-13 18:59:47

+0

您可以發佈您編寫的初始化facebox的javascript代碼嗎?我試圖創建一個示例項目來重現這一點,但我不能重現它,所以也許一個演示這個的jsFiddle也會有幫助。 – 2013-03-13 20:00:11

回答

0

_post.html.erb中的JavaScript包括在內,每個帖子執行一次。因此,如果用戶有五個帖子,則您正在初始化facebox五次。將腳本標記移出部分。相反,將它們放在show.html.erb中,這樣它們將只在整個頁面上執行一次。

+0

謝謝,感謝幫助 – user2159586 2013-03-13 20:21:08

0

我不由自主地想到facebox組圖像,因爲都具有相同的「rel」屬性。

嘗試這樣:

<%= link_to post.image_url, :rel => "facebox-#{post.id}" do %> 
    <%= image_tag post.image_url(:thumb).to_s %> 
<% end %> 
+0

_post.html.erb的腳本部分我不幸得到同樣的問題。爲了進一步解釋,如果我在localhost:3000/users/username上有2個不同的圖像發佈,並且當我點擊其中一個圖像時,會重複相同的圖像。顯示的圖像是正確的,但會根據用戶擁有的帖子數重複顯示。 – user2159586 2013-03-13 20:04:22

+0

調查生成的HTML源代碼。儘管我不太瞭解facebox,但這聽起來像是試圖將「不同」圖像(具有完全相同的rel-attribute的所有圖像)分組在一起顯示。 – jack 2013-03-13 22:36:51

0

如果你還是不幸運,嘗試基於一類的名稱以去除r​​el屬性和調用facebox:

<%= link_to post.image_url, :class => "facebox" do %> 
    <%= image_tag post.image_url(:thumb).to_s %> 
<% end %> 

和JavaScript:

$('a.facebox').facebox()