2010-05-19 4 views
8

Мне интересно, можно ли диктовать заказ (то есть: order => 'created_at DESC') в представлении. Я понимаю, что логика в представлении не идеальна, но у меня, похоже, возникают проблемы с определением того, где повлиять на этот вывод.Заказ. Результаты поиска в представлении

Например, вот мой код:

<% @user.questions.each do |question| %> 
    <%= link_to_unless_current h (question.title), question %> 
    Created about <%= time_ago_in_words h(question.created_at) %> ago 
    Updated about <%= time_ago_in_words h(question.updated_at) %> ago 

    <%= link_to 'Edit', edit_question_path(question) %> | 
    <%= link_to 'Destroy', question, :confirm => 'Are you sure?', :method => :delete %> 

<% end %> 

В моей QuestionsController У меня есть следующий индекс действия, но это не влияет на выход из кода выше.

class QuestionsController < ApplicationController 

def index 

    @questions = Question.all(:order => 'created_at DESC', :limit => 20) 

    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @questions } 
    end 
    end 

end 

UPDATE: Что касается изменения @ user.questions к @questions я получаю эту ошибку:

You have a nil object when you didn't expect it! 
You might have expected an instance of Array. 
The error occurred while evaluating nil.each 

UPDATE 2: Я думаю, я должен отметить, что этот код в вопросах показать вид , views/questions/show.html.erb.

+0

Отредактировано: –

ответ

10

Вы можете использовать:

<% unless @questions.empty? %> 
    <% @questions.each do |question| %> 
     # ... 
    <% end %> 
<% end %> 

в вашей точки зрения и

@questions = Question.all(:order => 'created_at DESC', :limit => 20) 

внутри show или index метод QuestionsController.

+0

Это не настоящий синтаксис для представления справа? Он нуждается в <%, не так ли? – bgadoci

+0

Да, вам это нужно ... –

2

вы должны использовать

<% @questions.each do |question| %> 

вместо

<% @user.questions.each do |question| %> 

отредактирован. Вы можете избежать ошибки nil, используя один из следующих способов.

<% @questions.each do |question| %> 


<% end unless @questions.blank? %> 

ИЛИ

<% for question in @questions %> 


<% end unless @questions.blank? %> 
+0

Когда я это сделаю, я получаю сообщение об ошибке. Я обновил свой вопрос. – bgadoci

+0

, пожалуйста, проверьте мой EDITED ответ. – Salil

+0

Ницца ... это избавилось от ошибки, но теперь оно не затрагивает вопросы пользователя. Как отправить: пользователь с запросом? – bgadoci

0

Используйте переменную @questions вместо @user.questions на ваш взгляд.

+0

Когда я делаю это, я получаю сообщение об ошибке. Я обновил свой вопрос. – bgadoci

4

Самый простой способ сделать это состоит в использовании reverse_each вместо each:

<% @user.questions.reverse_each do |question| %> 

Вы получаете ваши вопросы в порядке убывания, и ничего в контроллере не трогают.

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