2013-04-29 94 views
2

我有一个关系数据库,其中有一些属于这个,并有很多这样的...我有一个给定的URL参数的工作示例,但想知道如何将相同的概念应用到它的页面通过遍历所有数据库。Ruby on Rails:从ID显示数据库数据?

控制器

def index 
    @lists = List.all 

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

@lists = List.all是让我的数据库中的所有值,所以我可以在我的视图页面使用它,并重复该显示值。

但是,我想迭代它,然后也获得id,并根据id在我的数据库中遍历另一个表。我有工作在同一个控制器内的另一种方法(不知怎么的,我不知道)

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的迭代中获得id,然后以某种方式将id与数据库中的另一个表连接起来?

谢谢!

+0

是如何从这个问题的不同:http://stackoverflow.com/questions/16271661/ruby-on-rails-finding-the-database-id – 2013-04-29 05:51:41

回答

4

其实,你可以做到这一点。我相信如果您将<% @list.ideas.each do |idea| %>更改为<% list.ideas.each do |idea| %>,它将起作用。

问题是@list是一个实例变量(可能是一个,没有设置 - 我没有看到它的任何地方设置),而list是一个局部变量通过你的迭代器(.each)设置。

注意,顺便说一句,这将有可能开始很慢如列出您的数据库数量的增长上运行,因为服务器会打一个电话,来获取与每一个相关的思想。你可以使用eager loading来解决这个问题。

+0

甜!谢谢:)这一个工程。另外,我感谢您给予提示和解释 – hellomello 2013-04-29 06:06:00