我对rails的ruby相当新,但是我想从我的MySQL数据库构建这个表,包括两个表,Parent和Children。
enter code here
儿童(:id,:name,:parentId)
父(:id,:name,:childId)
以下是HTML代码:
<% @children.each do |child| %>
<tr>
<td><%= link_to child.name, child_path(child) %></td>
<td><%= child.ticker %></td>
<td><%= link_to child.parent, parent_path(parent) %></td>
</tr>
<% end %>
该表可以链接到两个表的show path,但仅限于child.parentId = parent.id。该表位于我的带有控制器的表格页面
class StaticPagesController < ApplicationController
def table
@children = Child.all.order('name ASC')
if params(:id) == child.parentId
@parent = Parent.find(params[id])
else
@parent = NULL
end
end
end
我知道这是不正确的,但我正在努力创建这个表。任何反馈或参考都是有帮助的!
提前谢谢。
答案 0 :(得分:0)
如果您使用的是sqlite3
,那么您的应用程序的数据库应该已经在db / development.sqlite3下。
答案 1 :(得分:0)
我不是100%肯定你在这里想要达到的目标,但也许我可以提供帮助。如果我弄错了,请随时在评论中纠正我。
首先,您的Parent
表格不需要我能看到的childId
列。如果没有它,Rails仍然可以告诉哪些父母哪个孩子以及哪些孩子属于哪个父母。我建议摆脱它。
对于Child
表,请考虑将parentId
替换为parent_id
。 Rails默认使用后者,除非你有充分的理由,否则通常更容易使用默认值。
考虑到这些因素,这两个模型的migrations可能看起来像这样:
<强>分贝/迁移/ [时间戳] _create_parents.rb 强>
class CreateParents < ActiveRecord::Migration
def change
create_table :parents do |t|
# the id column is created automatically.
t.string :name
end
end
end
<强>分贝/迁移/ [时间戳] _create_children.rb 强>
class CreateChildren < ActiveRecord::Migration
def change
create_table :children do |t|
# this creates a column `parent_id` with a foreign key for enforcing
# validity at the database level and an index for faster searching.
t.references :parent, foreign_key: true, index: true
t.string :name
end
end
end
您需要associate这两个模型,以便Rails可以找到合在一起的记录。
应用/模型/ parent.rb 强>
class Parent < ActiveRecord::Base
...
has_many :children
...
end
应用/模型/ child.rb 强>
class Child < ActiveRecord::Base
...
belongs_to :parent
...
end
现在,我不太确定你在控制器动作中的意思。首先,你可以写:
应用/控制器/ static_pages_controller.rb 强>
class StaticPagesController < ApplicationController
def table
@children = Child.all.order('name ASC')
end
end
确保此控制器操作有route。然后你的观点(下面稍作修正)应该有效,除了这个ticker
属性。这是你在数据库表中定义的东西吗?
应用/视图/ static_pages / table.html.erb 强>
<table>
<% @children.each do |child| %>
<tr>
<td><%= link_to child.name, child_path(child) %></td>
<td><%= child.ticker %></td> // as long as this attribute is defined, I believe it should work.
<td><%= link_to child.parent.name, parent_path(child.parent) %></td>
</tr>
<% end %>
</table>