2012-03-29 94 views
0

我正在尋找一個清道夫狩獵應用程序,我被卡住了。所以我設立了狩獵和與狩獵相關的任務的CRUD。但我不知道如何設置它,以便用戶可以將特定的任務與特定的搜索關聯起來。我認爲我已經正確地設置了模型,但我不確定如何設置允許這種任務與狩獵關聯的視圖。需要幫助將數據從一個模型鏈接到另一個模型

class Hunt < ActiveRecord::Base 

    has_many :tasks 
    attr_accessible :name 
    validates :name, :presence => true, 
        :length => { :maximum => 50 } , 
        :uniqueness => { :case_sensitive => false } 

end 


class Task < ActiveRecord::Base 

    belongs_to :hunts 
    attr_accessible :name 
    validates :name, :presence => true, 
        :length => { :maximum => 50 } , 
        :uniqueness => { :case_sensitive => false } 

end 

我猜我需要寫一個視圖,顯示一個狩獵,然後列出所有可用的任務。然後我需要一種方法讓用戶「挑選」一項任務並將其添加到搜索中。這是最後一部分,讓我難住。

回答

1

一些有價值的信息來源是:

  1. Ruby on Rails Guides: ActionView Helpers - 提供了一個很好的出發點和概述

  2. Blog on dealing with Categories - 討論使用從關聯表導出範疇,並在視圖呈現他們

  3. Rails Casts Nested Model - 這顯示瞭如何處理嵌套或has_many關係。

現在就加入任務,並加入了追捕,與使用嵌套屬性,你可以有一個顯示任務,允許添加的狩獵景觀的形式問題。添加操作可能需要一些Javascript(如RailsCasts中所演示的),或者在彈出窗口中執行一個hunt.tasks.build。關聯上的構建將爲創建的任務分配當前狩獵ID。

現在,如果您有一個預先分配給尋找的任務列表,您需要使表單顯示屬於尋線任務的選擇列表。使用模型中定義的嵌套屬性爲:

class Hunt < ActiveRecord::Base 
    has_many :tasks 
    accepts_nested_attributes_for :tasks 
end 

class Task < ActiveRecord::Base 
    belongs_to :hunts 
end 

所以,現在的形式提交PARAMS將與嵌套,允許你做的的update_attributes相關任務ID發佈。

更多詳細信息在Rails API accepts nested attributes和RailsCast參考將提供一步一步的示例。

+0

感謝您的所有資源! – 2012-03-29 13:04:19

0

您的belongs_to聲明在Task類應爲:hunt而不是:hunts

就目前看來,這很簡單。只需使用f.select(假設您的表單助手變量名稱爲f:hunt_id,並更新Task中的hunt_id屬性。

這將關聯HuntTask

一定要檢查出options_for_select,因此您可以在窗體中顯示Hunt名稱和hunt_id選項值。我也推薦閱讀關於關聯的Rails指南:http://guides.rubyonrails.org/association_basics.html

2

我猜我需要寫一個視圖,顯示一個狩獵,然後列出所有可用的任務。然後我需要一種方法讓用戶「挑選」一項任務並將其添加到搜索中。這是最後一部分,讓我難住。

以上意味着有HuntTask而不是has_many之間的has_and_belongs_to_many*..*)的關係(因爲尋線可以與多個任務相關聯,並一個任務可以屬於你的系統中的多個狩獵)。

你可以去:

class Hunt < ActiveRecord::Base 
    [...] 
    has_and_belongs_to_many :tasks 
    [...] 
end # Hunt 

class Task < ActiveRecord::Base 
    [...] 
    has_and_belongs_to_many :hunts 
    [...] 
end 

否則應使您可以將多個任務相關聯(或者,如果你願意,你可以只是一個關聯),並且還具有一個任務屬於一個以上的狩獵。此外,您可以使用簡單的f.select表單標籤助手來呈現系統中可用任務的列表。

希望這會有所幫助。

相關問題