如何个性化每个帖子? (Ruby on Rails)

时间:2013-03-13 18:52:19

标签: ruby-on-rails ruby ruby-on-rails-3 facebox

在每个用户个人资料(localhost:3000 / users / username)上,列出了用户发布的帖子。我实现了facebox,这是一个基于jQuery的灯箱,可以在点击时显示图像。这是我正在使用的代码:

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

问题在于,如果用户发了5个帖子,则点击相同图片会在脸盒中显示5次。

这是我的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>

3 个答案:

答案 0 :(得分:0)

我认为facebox会自动对图像进行分组,因为它们都具有相同的“rel”属性。

尝试这样的事情:

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

答案 1 :(得分:0)

_post.html.erb中的javascript包含在每个帖子中执行一次。因此,如果用户有五个帖子,则表示您正在初始化facebox五次。将脚本标记移出部分标记。而是将它们放在show.html.erb中,这样它们只会对整个页面执行一次。

答案 2 :(得分:0)

如果您还不幸运,请尝试删除rel属性并根据类名调用facebox:

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

和javascript:

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