【问题标题】:Ruby on Rails: Displaying Database Data from id?Ruby on Rails:从 id 显示数据库数据?
【发布时间】:2013-04-29 05:46:28
【问题描述】:

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

控制器

  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 内的页面内输出。但是如果我通过这种方式迭代,我无法在索引页面(没有 url 参数)中输出 all listsall ideas

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

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

<% end %>

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

谢谢!

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-3 controller


【解决方案1】:

实际上,您完全可以做到这一点。我相信如果您将&lt;% @list.ideas.each do |idea| %&gt; 更改为&lt;% list.ideas.each do |idea| %&gt;,它会起作用。

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

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

【讨论】:

  • 甜!!!谢谢 :) 这个有效。另外,感谢您提供提示和解释
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-02
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多