2014-05-14 21 views
1

我有和嵌套模型的對象。我目前得到的所有嵌套的對象,像這樣:Rails 4 - 找到嵌套的屬性,選擇某個孩子

@no = Parent.find(params[:parent_id]).children 

現在,這些孩子中的一個具有標識作爲他們最喜愛的一個屬性。我怎樣才能從孩子中得到最喜歡的孩子?

另外,如何在視圖/更新中僅使用fields_for來編輯屬性?

+0

不要忘了接受一個答案像你好像做每一次你問一個問題StackOverflow上的時間... – MrYoshiji

+0

@MrYoshiji釷請您提供答案和評論。你的回答在我的問題的第一部分幫助了我。當我的問題的所有部分都被回答時,我肯定會接受一個解決方案。例如,這個問題還沒有得到答案。我仍然需要知道如何更新子對象的屬性。 – Jordan

+0

我用第二個問題的代碼更新了我的答案 – MrYoshiji

回答

5

我不知道您的屬性的名稱,該名稱將該記錄標識爲收藏,但我們假設它是名爲is_favoriteboolean。考慮到這一點abose,下面應該工作:

children = Parent.find(params[:parent_id]).children 
@favorited_children = children.where(is_favorite: true) # return 0..N records! not only 0..1 ! 

要修改它的屬性,你可以如下(你必須把它在ERB或HAML翻譯,這取決於你的應用程序使用什麼)做:

form_for @favorited_children do |form_builder| 
    form_builder.text_field :name 
    form_builder.check_box :is_favorite 
end 

希望這有助於!

+0

謝謝!正是我需要的 – Jordan

1

你也可以看看使用ActiveRecord Association Extension

這基本上通過創建實例方法,你可以鏈接到子關聯,就像這樣:

#app/models/parent.rb 
Class Parent < ActiveRecord::Base 
    has_many :children do 
     def favorites 
      where(is_favorite: true) #-> to use MrYoshi's example 
     end 
    end 
end 

這將允許您使用以下命令:

@parent = Parent.find params[:id] 
@favorites = @parent.children.favorites