2013-04-09 59 views
0

只是試圖讓我的頭在下面,可能基本我知道。我通過使用。每個記錄數組循環,並想查看這篇文章我通過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 %> 

因爲我得到未定義的方法標題的數組。理論在這裏,我知道,但如何位從數組中得到一個單獨的記錄在這種情況下

任何幫助表示讚賞

+0

只是一個簡單的建議,與你的問題@Richlewis無關,使用'reverse_each'而不是'reverse.each'方法。沒有理由顛倒數組以反向迭代它。 – Pigueiras 2013-04-09 19:40:58

+0

好的謝謝你的提示,但我倒過來的數組顯示我的結果,因爲我想以相反的順序顯示結果? – Richlewis 2013-04-09 19:50:47

回答

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。

+0

謝謝你,所以在我的控制器@tynewyddpost呈現像在問題中,所以是這個實例變量,我改變說你的第二個選項?所以tynewyddpost = Post.tynewydd_posts.reverse變成tynewyddpost = Post.tynewydd_posts.find(params [:id] – Richlewis 2013-04-09 19:48:19

+0

我得到錯誤無法找到後沒有ID? – Richlewis 2013-04-09 19:59:57

+0

我已經使用tynewyddnews_path,因爲我想在同一頁上呈現的帖子通過Ajax,這不是做到這一點的方法嗎? – Richlewis 2013-04-09 20:21:13

1

您需要在此帖子的每個鏈接ID中指定。

例如:

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

而不是指定的控制器動作,您所呼叫,通過ID

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

發現這比你的部分事例@tynewyddnews被點擊後