2010-05-19 16 views
8

Me pregunto si es posible dictar el orden (es decir: order => 'created_at DESC') dentro de la vista. Me doy cuenta de que la lógica en la vista no es ideal, pero parece que tengo algunos problemas para ubicar dónde afectar este resultado.Ordenar cada resultado en la vista

Por ejemplo, aquí está mi código:

<% @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 %> 

En mi QuestionsController tengo la siguiente acción index pero no afecta a la salida del código de seguridad.

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 

ACTUALIZACIÓN: En lo que respecta a la evolución de los user.questions @ a @questions consigo este error:

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 

ACTUALIZACIÓN 2: Creo que debería mencionar que este es el código de las preguntas mostrar vista . views/questions/show.html.erb.

+0

Editado mi respuesta:] –

Respuesta

10

Se puede utilizar:

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

en su punto de vista y

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

dentro show o index método de QuestionsController.

+0

Esa no es la sintaxis real para la vista ¿no? Necesita el <% ¿no? – bgadoci

+0

Sí, lo necesitas ... –

2

se debe utilizar

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

en lugar de

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

editados. Puede evitar un error nulo utilizando una de las siguientes formas.

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


<% end unless @questions.blank? %> 

O

<% for question in @questions %> 


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

Cuando lo hago me sale un error. Actualicé mi pregunta – bgadoci

+0

por favor revisa mi respuesta EDITADA. – Salil

+0

Bueno ... que se deshizo del error, pero ahora no responde a las preguntas del usuario. ¿Cómo envío: usuario con la solicitud? – bgadoci

0

Utilice la variable @questions en lugar de @user.questions en su opinión.

+0

Cuando lo hago, recibo un error. Actualicé mi pregunta – bgadoci

4

Una forma sencilla de hacerlo es utilizar reverse_each en lugar de each:

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

Te dan las preguntas en el orden descendente, y no tocar nada en el controlador.

Cuestiones relacionadas