2

我有一个关系数据库,其中有一些东西属于这个,并且其中有很多......我有一个给定 URL 参数的工作示例,但想知道如何将相同的概念应用于它迭代的页面所有数据库。

控制器

  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

Where@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. 但是如果我以这种方式迭代,我无法在索引页面中输出所有内容(没有url参数 lists ideas

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

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

<% end %>

这有意义吗?我想我只是想弄清楚如何从迭代中获取 id,@lists然后以某种方式将 id 与数据库中的另一个表连接起来?

谢谢!

4

1 回答 1

4

实际上,您完全可以这样做。我相信如果您更改<% @list.ideas.each do |idea| %><% list.ideas.each do |idea| %>,它将起作用。

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

请注意,顺便提一下,随着数据库中列表数量的增长,这可能会开始运行得很慢,因为服务器将调用一次以获取与每个相关的想法。您可以使用急切加载来解决此问题。

于 2013-04-29T05:51:28.477 回答