作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
运行 Rails 3.1.3...
我将使用嵌套关联的一个简单示例(不确定这是否正确)。基本上我正在建模数据库 - 每个数据库都有自己的表,每个表都有自己的列:
class Database < ActiveRecord::Base
has_many :tables
end
class Table < ActiveRecord::Base
belongs_to :database
has_many :columns
end
class Column < ActiveRecord::Base
belongs_to :table
end
class DatabasesController < ApplicationController
def show
@database = Database.find_by_id(params[:id])
@tables = @database.tables
@columns = @database.tables.columns
end
end
Database: <%= @database.database_name %><br />
<% @tables.each do |table| %>
Table: <%= table.table_name %><br />
<% table.columns.each do |column| %>
Column: <%= column.column_name %><br />
<% end %>
<% end %>
@database = Database.where(:id => params[:id]).includes(:tables => [:columns])
def show
@database = Database.where(:id => params[:id]).includes(:tables => [:columns]).first!
end
Database: <%= @database.database_name %><br />
<% @database.tables.each do |table| %>
Table: <%= table.table_name %><br />
<% table.columns.each do |column| %>
Column: <%= column.column_name %><br />
<% end %>
<% end %>
最佳答案
除非我遗漏了一些东西,否则这对我来说实际上看起来没问题,尽管您不需要 Controller 中的 @tables 和 @columns,除非您真的将它们用于 View 中的某些内容。
Controller :
class DatabasesController < ApplicationController
def show
@database = Database.find(params[:id], :include=>{:tables => [:columns]}) #eager load
#or: @database = Database.where(:id => params[:id]).includes(:tables => [:columns]).first #eager load
#or: @database = Database.find(params[:id]) #queries will be executed in the view
end
end
Database: <%= @database.database_name %><br />
<% @database.tables.each do |table| %>
Table: <%= table.table_name %><br />
<% table.columns.each do |column| %>
Column: <%= column.column_name %><br />
<% end %>
<% end %>
关于ruby-on-rails - 嵌套关联,如何为 View 、 rails 准备变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9129714/
我是一名优秀的程序员,十分优秀!