如何使用simple_form从集合中返回对象?

时间:2015-02-05 10:52:59

标签: ruby-on-rails ruby-on-rails-4 simple-form

我有一个simple_form输入字段,如下所示:

<%= f.input :parents, collection: (@node.family_tree.nodes - @node.parents - [@node]).uniq, label: "Parent 1" %>

但这会产生这样的HTML:

<option value="13">Jack</option>

value是从集合中选择的对象的ID

但是,我想将整个对象作为AR对象或数组返回。例如,我希望能够得到这样的东西:

<%= f.input :parents, collection: (@node.family_tree.nodes - @node.parents - [@node]).uniq, value_method: :parents, label: "Parent 1" %>

产生这个:

<option value="[#<Node id: 36, family_tree_id: 2, created_at: &quot;2015-01-28 23:19:28&quot;, updated_at: &quot;2015-01-28 23:19:28&quot;, name: &quot;Mesty&quot;, ancestry: &quot;13/35&quot;, ancestry_depth: 0, max_tree_depth: 0>]">Resty</option>

但使用value_method: :self并不起作用。

那么,使用这些示例,如何返回id=13的整个节点对象,而不仅仅是13

1 个答案:

答案 0 :(得分:0)

您似乎应该使用simple_form的f.association而不是f.input来处理关系。

请参阅https://github.com/plataformatec/simple_form#associations