2013-04-29 7 views
2

У меня есть реляционная база данных, где что-то принадлежит этому, и где у этого много чего ... У меня есть рабочий пример для заданных параметров URL, но хотелось бы знать, как применить ту же концепцию к странице, где она итерации через ВСЕ базы данных.Ruby on Rails: отображение данных базы данных с идентификатора?

Контроллер

def index 
    @lists = List.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @lists } 
    end 
    end 

@lists = List.all, чтобы получить все значения в моей базе данных, так что я могу использовать его в моей странице просмотра и перебирать, что для отображения значений.

Однако, я хотел бы повторить его, а затем получить идентификатор и перебрать другую таблицу в моей базе данных на основе идентификатора. У меня есть другой метод в том же контроллере, который работает (как-то, я не знаю)

def show 
    @list = List.find(params[:id]) 
    @idea = @list.ideas.build 
    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @list } 
    end 
    end 

Где @list = List.find(params[:id]) получает параметр в URL, а затем @idea = @list.ideas.build как-то делает это относится к @list, где я могу использовать эту петлю

<% @list.ideas.each do |idea| %> 
    <div> 
    <div class="list_idea_desc"><%= idea.description %></div> 
    </div> 
<% end %> 

, чтобы получить значения из ideas таблицы и вывода внутри страницы в list. Но я не могу выход всеlists и всеideas в индексной страницы (без параметра URL), если я переборе таким образом:

<% @lists.each do |list| %> 

     <% @list.ideas.each do |idea| %> 
      <div> 
      <div class="list_idea_desc"><%= idea.description %></div> 
      </div> 
     <% end %> 

<% end %> 

Имеет ли это смысл? Наверное, я просто пытаюсь выяснить, как получить идентификатор от итерации @lists, а затем каким-то образом подключить идентификатор к другой таблице в моей базе данных?

Спасибо!

+0

Как этот вопрос отличается от: http://stackoverflow.com/questions/16271661/ruby-on-rails-finding-the-database-id –

ответ

4

Собственно, вы можете сделать именно это. Я считаю, что если вы измените <% @list.ideas.each do |idea| %> на <% list.ideas.each do |idea| %>, он будет работать.

Проблема заключается в том, что @list является переменной экземпляра (вероятно, один, который не установлен, - я не вижу его в любом месте установлен), в то время как list локальная переменная устанавливается вашим итератора (.each).

Обратите внимание, что это, скорее всего, начнет работать довольно медленно по мере увеличения количества списков в вашей базе данных, поскольку сервер сделает один звонок для получения идей, связанных с каждым из них. Вы можете решить это, используя eager loading.

+0

sweet !!! спасибо :) этот работает. Кроме того, я ценю, что вы даете советы и объяснения – hellomello