2

我已经在我的模型上实现了jQuery Tokeninput作为标记机制,Chain并且一切都运行良好。现在我正在尝试抽象标记字段,以便它可以与多个模型一起使用,并且我无法让数据正确地进行预填充。我也在使用nested_form插件。

前提是我的Chainhas_manyEvents所以当我编辑 a 时Chain,我还想编辑关联的Events. theChain和 associatedEvents都可以独立标记。

这是相关的视图结构:github.com/chrbradley/EVEnT/blob/master/app/views/chains/edit.html.erb)

<%= render partial: 'form', locals: { chain: @chain } %>

github.com/chrbradley/EVEnT/blob/master/app/views/chains/_form.html.erb

<%= nested_form_for @chain do |f| %>
  <div class="form-group">
  <%= f.label :title %>
  <%= f.text_field :title, class: "form-control" %>
  <%= f.label :description %>
  <%= f.text_area :description, class: "form-control" %>
<%= render 'tag_fields', f: f, tags: @chain.tags %><br />
...
<%= f.fields_for :events do |builder| %>
  <%= render 'event_fields', f: builder %>
<% end %>
...

github.com/chrbradley/EVEnT/blob/master/app/views/chains/_event_fields.html.erb)

<%= render 'tag_fields', tags: f.object.tags, f: f %>

github.com/chrbradley/EVEnT/blob/master/app/views/chains/_tag_fields.html.erb)

<%= f.text_field :tag_tokens, data: {load: tags}, class: 'js-tokenizer' %>

github.com/chrbradley/EVEnT/blob/master/app/assets/javascripts/chains.js.coffee)

$('.js-tokenizer').tokenInput('/tags.json', {
  theme: 'mac',
  prePopulate: $('.js-tokenizer').data('load'),
  preventDuplicates: true})

就目前而言,这会导致Chain标签被预先填充到每个事件<%= f.text_field :tag_tokens, data:...的部分字段中的所有字段中。_tags_fields如果我从这里保存,所有Event标签都会与Chain标签一起保存。

当我检查任何事件的标签字段元素时,html 显示标签列表由来自的标签组成,Chain但紧随其后的</ul>是给定的Event是带有所有正确标签的哈希。<input class="js-tokenizer" data-load="[{......

这向我表明,Rails 和 JS 菜鸟,问题出prePopulatechains.js.coffee. 此外,如果我从 中删除对_tag_fields部分的调用_form,所以我只是试图编辑 上的标签Events,所有标签字段都会填充第一个事件的标签。我不确定这里发生了什么,所以任何帮助将不胜感激。

同样由于我的声誉不佳,我不能包含超过 2 个链接,所以如果有人可以重新格式化这篇文章。

4

0 回答 0