из ваших комментариев я вижу, что это все еще очень ново.Rails - это MVC, короче говоря, это означает, что контроллер C = собирает все данные.
Использовали ли вы строительные леса для создания bets_controller.rb
?Я думаю, нет, вы должны попробовать в командной строке в корневой папке вашего приложения.Сделайте что-то вроде
rails g scaffold Bet text:string completed:boolean won_by_bettor:boolean ...
и добавьте все свои поля.Это создаст модель, миграцию, контроллер и примеры представлений.Когда вы начинаете, это отличный способ увидеть, как все связано друг с другом.
Что вы тогда увидите, что внутри контроллера извлекаются все данные (модели), а представление выполняет только рендеринг.Внутри контроллера вы устанавливаете некоторые переменные экземпляра (например, @bets
), и они затем будут доступны в представлении.
Таким образом, в контроллере был бы метод index
, который имеет следующий код
def index
@bets = Bet.find(:all)
end
и внутри вашего представления вы просто визуализируете их.
Так что ответ @dmarkow совершенно верен, но, возможно, все еще слишком глубок для вас.
В любом случае: я бы предложил выбрать хорошую книгу, такую как Agile Web Development With Rails , что очень хорошо для начала.
[РЕДАКТИРОВАТЬ: добавлено после просмотра вставки]
Не уверен, но, похоже, вам не хватает show
метода.И если я правильно понимаю, внутри show
одной ставки вы хотите перечислить все ставки одного пользователя?На самом деле, чтобы быть больше REST, это было бы представление пользователя, или представление ставок в пользовательской области, или стандартное представление ставок.Обычная практика заключается в том, что если пользователь посещает страницу индекса, он может видеть только свои собственные элементы (в данном случае bets
- и не все существующие ставки: их увидит только администратор).
Так что, хотя в отличие от REST показывать список ставок в окне просмотра ставок, это определенно возможно.
Также я видел, что в вашем представлении вы пытаетесь найти все ставкипользователя: это, как правило, код, который вы вместо этого поместите в контроллер.Вы хотите, чтобы код по вашему мнению был минимальным.ТАК внутри вашего bets_controller.rb
я бы добавил
def show
@bets = @user.bets.order("twitter_tstamp DESC")
end
, а внутри вашего представления вы бы использовали @bets.each
вместо этого.В остальном я возражаю против использования одной буквы w
(что не имеет смысла для меня - но, может быть, это для вас);для bet
я бы предложил b
, но с Rubymine у вас больше нет оправданий сохранять имена переменных: это только делает ваш код ужасно трудным для чтения в дальнейшем.
Что не делает?не работает в представлении, которое вы показываете?На какой строке вы получаете сообщение об ошибке?