Упорядочивание .each приводит к представлению

Я задаюсь вопросом, возможно ли продиктовать порядок (т.е.: закажите => '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

ОБНОВЛЕНИЕ: Относительно изменения @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

ОБНОВЛЕНИЕ 2: Я предполагаю, что должен упомянуть, что этот код находится в выставочном представлении вопросов. views/questions/show.html.erb.

8
задан bgadoci 19 May 2010 в 18:29
поделиться

3 ответа

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

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

в вашем представлении и

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

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

11
ответ дан 5 December 2019 в 10:01
поделиться

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

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

вместо

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

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

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


<% end unless @questions.blank?  %>

ИЛИ

<% for question in @questions %>


<% end unless @questions.blank?  %>
2
ответ дан 5 December 2019 в 10:01
поделиться

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

0
ответ дан 5 December 2019 в 10:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: