嘿家伙。我对铁轨的发展很陌生,并且遇到了一些困难。我正在处理的应用程序是一个调度解决方案,需要更新联接模型,但不是以简单的1:1方式。更新二维表格
应用程序是布局如下:
class Route < ActiveRecord::Base
has_many :markers, :foreign_key => 'source_id'
has_many :schedules
accepts_nested_attributes_for :markers, :allow_destroy => true, :reject_if => proc { |a| a['name'].blank? }
accepts_nested_attributes_for :schedules, :allow_destroy => true, :reject_if => proc { |a| a['name'].blank? }
end
class Schedule < ActiveRecord::Base
has_many :arrivals
has_many :markers, :through => :arrivals
accepts_nested_attributes_for :arrivals, :allow_destroy => true, :reject_if => :all_blank
end
class Marker < ActiveRecord::Base
has_many :arrivals
has_many :schedules, :through => :arrivals
end
class Arrival < ActiveRecord::Base
belongs_to :marker
belongs_to :schedule
end
...这样一个基本的has_many:通过...或者,所以我会想:P
当你创建一个路由,就可以创建1..n个时间表,以及1..n个标记。编辑时间表应允许您为路线中定义的每个标记添加1..n到达条目。这是什么让我悲伤。
通过ASCII艺术的神奇,这就是我想要的应用程序看起来像:
我已经删除我本来不完整的视图代码:
/views/routes/edit.html.erb (works already)
ROUTE
-----
...
SCHEDULES
---------
[Add]
* Schedule 1 [Edit][Delete]
* Schedule 2 [Edit][Delete]
...
MARKERS
-------
[Add]
* Marker 1 [Edit][Delete]
* Marker 2 [Edit][Delete]
* Marker 3 [Edit][Delete]
* Marker 4 [Edit][Delete]
...
/views/schedules/edit.html.erb
SCHEDULE X
----------
[Add Col.]
Marker 1 [ ] [ ]
Marker 2 [ ] [ ]
Marker 3 [ ] [ ]
Marker 4 [ ] [ ]
[x] [x]
(the [x] should remove a column)
EDIT(09NOV04)张贴,但想更新一下这个问题。
我认为这里的一部分困惑(对于我自己和可能对任何可能帮助的人)是因为我没有正确解释关系。
- 标记有许多来港定居人士
- 时间表有很多标记
- 路线有很多的时间表
这是基础。
有一个表格可以更新单个标记的到达并不困难,因为这是一个基本形式。我希望做的是提供一个表格,同时更新所有标记。
当您点击“添加条目”时,它应该为当前可用的每个标记添加新的到达。在每个“列”下,应该有一个“删除”按钮,这将删除每个到达该特定列(从每个标记)。
我不知道如果清除它收拾:当你创建一个路由P
现在我有了route_markers,我可以通过执行@ schedule.route_markers.find(:all)来获取控制器中的标记,并使用它在视图中构建列表。 这就是我想要做的事情,这让我感到有点不舒服。我正在使用标记列表来构建一个简单的表格。每个“行”应该代表特定标记的到达条目的数量。我正在使用“复杂形式”示例来设置“列”的动态添加,但我不确定如何将该部分设置为输入和编辑。如果有帮助,我在原始文章中有一个“理想”视图配置。 – 2009-10-25 20:44:27
我不明白你的专栏应该代表什么。每个专栏应该是一个到达?因为现在已经布置了一些方法,所以没有办法将多个到达标记联系起来。你能否更新你的问题以更好地解释表单? – EmFi 2009-10-25 21:01:37
嘿Emfi, 我想要做的是这样的:每个标记可以有多个到达。我想要做的是能够根据可用标记的数量添加到达的新“列”。我认为这是它变得混乱的地方。您应该无法一次添加“单个”到达条目,但从技术上讲,这是它将存储在数据库中的方式。 用例如下:如果您有标记称为Point1,Point2 ... Pointn,那么当您单击“Add”时,它应该为每个标记生成字段,并且每个字段表示一个到达。 – 2009-11-04 16:02:08