我有和嵌套模型的对象。我目前得到的所有嵌套的对象,像这样:Rails 4 - 找到嵌套的属性,选择某个孩子
@no = Parent.find(params[:parent_id]).children
现在,这些孩子中的一个具有标识作为他们最喜爱的一个属性。我怎样才能从孩子中得到最喜欢的孩子?
另外,如何在视图/更新中仅使用fields_for
来编辑属性?
我有和嵌套模型的对象。我目前得到的所有嵌套的对象,像这样:Rails 4 - 找到嵌套的属性,选择某个孩子
@no = Parent.find(params[:parent_id]).children
现在,这些孩子中的一个具有标识作为他们最喜爱的一个属性。我怎样才能从孩子中得到最喜欢的孩子?
另外,如何在视图/更新中仅使用fields_for
来编辑属性?
我不知道您的属性的名称,该名称将该记录标识为收藏,但我们假设它是名为is_favorite
的boolean
。考虑到这一点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
希望这有助于!
谢谢!正是我需要的 – Jordan
你也可以看看使用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
不要忘了接受一个答案像你好像做每一次你问一个问题StackOverflow上的时间... – MrYoshiji
@MrYoshiji钍请您提供答案和评论。你的回答在我的问题的第一部分帮助了我。当我的问题的所有部分都被回答时,我肯定会接受一个解决方案。例如,这个问题还没有得到答案。我仍然需要知道如何更新子对象的属性。 – Jordan
我用第二个问题的代码更新了我的答案 – MrYoshiji