2013-08-10 3 views
0

Если я сохраняю массив с помощью @levels.each(&:save), как загрузить его с уровня модели? То есть: что соответствующая команда заселить массив из сохраненных данныхЗагрузить модель в массив в рельсах

@levels = Level.find_all 

Кажется, не существует, я очень новичок в этом, как вы видите, я хочу, чтобы хранить и загружать, уровни!

Вот мой GamesController:

def initialize 
@levels = [] unless @levels 
@levels = levels 

конец

def add_level 
    levels << Level.new 
    levels.each(&:save) 
    redirect_to edit_game_path(params[:id]) 
end 

и модель:

class Game < ActiveRecord::Base 
    has_many :levels 
end 
+0

Непонятный вопрос. У вас уже есть уровни в '@ levels', зачем вам их снова загружать? – sevenseacat

+0

Я хочу иметь список уровней, принадлежащих игре при загрузке страницы, поэтому я догадался, что мне приходилось загружать с уровней в некоторый список @levels в игровом контроллере каждый раз, когда перезагружается страница ... –

ответ

1

Если ваша ассоциация:

Игра имеет много уровней и уровень относится к игре.

Тогда @game = Game.find_by_id (PARAMS [: идентификатор]) #whoesoever игра страница это @levels = @ game.present? ? @ game.levels: []

Надеюсь, я понял вашу проблему

+0

У меня есть @game = Game.find (params [: id]) Но как подключить уровни к этой игре и как сохранить или сохранить уровни в игра? –

+0

@ game.levels просто дает «неопределенный метод' levels »для nil: NilClass« –

+0

Вы должны сделать ассоциацию belongs_to в модели level.rb. Для этого напишите строку ниже в файле level.rb. принадлежит_to: game и вы должны иметь столбец game_id в таблице уровней. Кроме того, если вы получаете неопределенные «уровни» метода для класса nil. Затем проверьте, получаете ли вы параметры [: id] или нет. Тогда @ game.levels будет работать. –

1
@levels = Level.all 

Если вам массив объектов уровня. Объявление этой переменной экземпляра в вашем GamesController сделает ее доступной для вашего представления.

+0

Почти справа, это получает все уровни, но уровни должны принадлежать определенной игре. Например, game1-> level1, level2, в то время как game2-> levelx, levely –