从一系列记录链接到当前帖子

时间:2013-04-09 19:20:15

标签: ruby-on-rails arrays ruby-on-rails-3 activerecord

试着让我的头脑绕过以下,可能基本我知道。我正在使用.each循环遍历一系列记录,并希望在同一页面上通过ajax请求查看帖子

  <h2>Recent News</h2>
   <ul>
    <% @tynewyddpost.reverse.each do |t| %>
     <li>
       <% single = t.photos.first %>
        <a class="photo" href="#"><%= image_tag(single.avatar.url(:thumbnail_news_images)) %></a>
         <p><%= link_to t.title, tynewyddnews_path(:type => 'tynewyddnews'), :remote => true %></p>
         <p class="date"><%= date_output(t.published_on) %></p>
      </li> 
     <% end %>
    </ul>

因此,当我点击标题时,无论我点击哪条记录,它都会呈现相同的帖子。

部分我渲染

    <div class="post-item">
     <% @tynewyddpost.reverse.each do |t| %>
      <h2><%= t.title %></h2>
       <div id="work-samples"> 
        <% for photo in t.photos %>
         <%= image_tag(photo.avatar.url(:news_images), :class => 'work-sample') %>
        <% end %>
      </div>  
  <p class="post-description"><%= t.comments.html_safe %></p>
   <div class="post-item-panel">
      <ul>
       <li class="date">
        <p><%= date_output(t.published_on) %></p>
       </li>
      </ul>
  </div>
</div>
  <% end %>

控制器

 def tynewyddnews
@title = 'Ty Newydd News'
tynewyddpost = Post.tynewydd_posts.reverse
tynewyddpost.pop
@tynewyddpost = tynewyddpost
@tynewyddpostlatest = Post.tynewydd_posts.first

范围

scope :tynewydd_posts, :include => :department, :conditions => {"departments.name" => "Ty Newydd"}, :order => "posts.published_on DESC"

我的问题是如何获取我点击的特定帖子。我不能

<%= @tynewyydpost.title %>

因为我得到了数组的未定义方法标题。我知道这里的理论有点但是如何从这个实例中的数组中获取单个记录

任何帮助表示赞赏

2 个答案:

答案 0 :(得分:2)

您需要传递您点击的帖子的ID:

<p><%= link_to t.title, tynewyddnews_path(:type => 'tynewyddnews', :post_id => t.id), :remote => true %></p>

所以在你的控制器中你可以做到

@theposticlickedon = Post.find(params[:post_id])

@theposticlickedon = Post.tynewydd_posts.find(params[:post_id])

但是,您可能还想定义一个不同的路径来显示单个帖子,而不是您链接中的tynewyddnews_path。

答案 1 :(得分:1)

您需要在此帖子的每个链接ID中指定。

例如:

<%= link_to t.title, tynewyddnews_path(:type => 'tynewyddnews'), :post_id=>t.id, :remote => true %>

然后在控制器操作中指定,通过id

查找
@tynewyddnews=Post.find(params[:post_id])

比你的部分实例@tynewyddnews将被点击发布