我正在玩Neo4j和Rails,我创建了一个使用ActiveNode创建新节点和关系的应用程序。这是我目前的数据模型:
(company1)-[:RESEARCHING]->(market1)
(company2)-[:RESEARCHING]->(market2)
我有一个公司页面,其下拉菜单包含“market1”和“market2”。当我创建公司时,我可以选择“market1”,并在该公司和“market1”之间创建新的关系。如果我更新公司,我可以更改下拉列表中的项目,它将删除旧关系并创建一个新关系。
我想要做的是将此下拉菜单挂钩到Bootstrap Multiselect,这样我就可以从我的下拉列表中选择多个市场,一次创建多个关系。像这样:
(market2)<-[:RESEARCHING]-(company1)-[:RESEARCHING]->(market1)
我找到了大部分内容,我的Bootstrap菜单可以工作,但不会更新数据库。我只是不知道在提交时添加关系的这段代码放在哪里:
@company.market.try(:id)
(至少我认为确实如此。)有关如何做到这一点的任何想法?提前谢谢!
这是我的代码:
<!-- Current working form. -->
<div class="field">
<%= f.label :market %><br>
<%= f.select "market",
options_from_collection_for_select(Market.all, "id", "name", @company.market.try(:id)) %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<!-- The form I would like to create. -->
<form id="form1">
<div style="padding:20px">
<select id="market" multiple="multiple">
<% @markets.each do |market| %>
<option name="<%= market.name %>" value="<%= market.name %>"><%= market.name %></option>
<% end %>
</select><br><br>
<div class="actions" id="submit" value="Submit">
<%= f.submit %>
</div>
<script type="text/javascript">
$(function() {
$('#market').multiselect({
includeSelectAllOption: true
});
$('#submit').click(function() {
})
});
</script>
</div>
</form>
答案 0 :(得分:0)
请耐心等待,我以前没有和options_from_collection_for_select
合作过。看起来它只需要知道表单是否已经选择了这个,所以我认为最好先计算出来,然后根据该列表检查每个市场。 API docs看起来我们可以给出一个proc,所以也许是这样的?
<% @selected_markets = @company.markets(:m).pluck('m.uuid') %>
<%= f.select "market",
options_from_collection_for_select(Market.all, "id", "name", proc { |market| @selected_markets.include?(market.uuid) }) %>
这假设您在markets
模型上有Company
个关联。