嘿傢伙。我對鐵軌的發展很陌生,並且遇到了一些困難。我正在處理的應用程序是一個調度解決方案,需要更新聯接模型,但不是以簡單的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