рельсы используют счетчики в разных видах - PullRequest
0 голосов
/ 23 мая 2010

Здравствуйте, я думаю это будет довольно нубский вопрос .. Но ..

У меня есть эшафот с именем list, который has_many: желания. И с этой информацией в моей модели, я могу в моем списке использовать этот код

ну теперь я сделал контроллер под названием statusboard .. И в этом 'у меня есть 3 функции .. или как это сказать .. но это индекс, вход в систему, выход из системы .. и .. в входе в систему и в файле # app / views / statusboard / loggedin.html.erb я хочу чтобы отобразить это ..

Привет, {Имя пользователя}, у тебя есть {списки списков} списков и {количество желаний} пожеланий

вот что я решил написать в моем файле ..

Привет, {имя пользователя}, у тебя есть <% = h @ user.list.count%> списки и <% = h @ user.wishes.count%> желает

моя модель списка выглядит следующим образом =

Список классов

attr_accessible: user_id,: name,: description

принадлежит_: пользователям

has_many: пожелания

конец

и моя модель желаний такая =

Класс Wish

attr_accessible: list_id,: имя,: цена,: ссылка,: рейтинг,: комментарий

Proper_to: список

конец

и последняя моя пользовательская модель выглядит так =

класс User

# Включить модули разработки по умолчанию. Другие доступные:

#: token_authenticatable,: lockable и: timeoutable

devise: database_authenticatable,: registerable, #: подтверждаемый,

: восстанавливаемый,: запоминаемый,: отслеживаемый,: проверяемый

# Настройка доступных (или защищенных) атрибутов для вашей модели

attr_accessible: электронная почта,: пароль,: password_confirmation

has_many: списки

конец

Я надеюсь, что кто-то может мне помочь :-)! / Олуф Нильсен

Ответы [ 3 ]

0 голосов
/ 24 мая 2010

Добавьте has_many: through для пользователя:

class User < ActiveRecord::Base
  ...
  has_many :lists
  has_many :wishes, :through => :lists
end

, и тогда вы можете использовать

@user.wishes.count
0 голосов
/ 24 мая 2010

Это немного тангенциально, но нет необходимости использовать вспомогательный метод h html sanitizing для:

<%=h @user.list.count %>

, поскольку count - это метод, сгенерированный ruby, а не созданный пользователем.

0 голосов
/ 23 мая 2010

Напишите этот метод в пользовательской модели

#copy the below code in /app/models/user.rb file`
def wishes_count
  counter = 0
  self.lists.each do |list| # this is similar to @user.lists 
    counter += list.wishes.count #this is similar to @list.wishes
  end
  return counter
end

Привет, {имя пользователя}, у тебя есть <% = h @ user.list.count%> списки и <% = h @ user.wishes_count%> желает

вы не можете использовать @ user.wishes.count, поскольку пользователь не имеет прямого отношения к пожеланиям, надеюсь, это решение подойдет вам. Если у вас есть вопросы, пожалуйста, оставьте комментарий.

...