2013-04-09 4 views
0

Просто пытаясь окунуться в следующее, возможно, основное, что я знаю. Я перекручивание через массив записей с помощью .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 %> 

Как я получаю undefined название метода для массива. Немного теории здесь я знаю, но как получить отдельные записи из массива в данном случае

Любая помощь оценили

+0

Просто простой совет, который не имеет ничего общего с вашим вопросом @Richlewis, используйте метод 'reverse_each' вместо' reverse.each'. Нет никакой причины для изменения массива, чтобы перебрать его назад. – Pigueiras

+0

ok спасибо за подсказку, но я реверсировал массив, чтобы показать мои результаты, поскольку я хотел показать результаты в обратном порядке? – Richlewis

ответ

2

Вы должны передать идентификатор поста вы нажали на:

<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

+0

i get error не удалось найти сообщение без id? – Richlewis

+0

Я использовал tynewyddnews_path, поскольку мне бы хотелось, чтобы сообщение отображалось на той же странице через ajax, это не способ сделать это? – Richlewis

1

Необходимо указать в каждом идентификаторе ссылки этого сообщения.

Например:

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

И чем указать, что в действии контроллера вы звоните, находя это по идентификатору

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

Чем вы частичное @tynewyddnews экземпляра будет щелкнуло пост

Смежные вопросы