jQuery Tokeninput prePopulate不使用nested_form

时间:2013-10-10 14:46:14

标签: jquery ruby-on-rails nested-forms jquery-tokeninput

我在我的Chain模型上实现了jQuery Tokeninput作为标记机制,一切都运行良好。现在我正在尝试抽象标记字段,以便它可以使用多个模型,我无法正确地将数据提供给prePopulate。我也在使用nested_form插件。

前提是我的Chain has_many Events所以当我编辑Chain时,我还想编辑相关的EventsChain和关联的Events都可以独立标记。

这是相关的视图结构: 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>之后的给定{{1} {}}是Event,其中<input class="js-tokenizer" data-load="[{...是包含所有正确标记的哈希值。

这向我指出一个Rails和JS noob,问题出在...中的prePopulate函数。另外,如果我从chains.js.coffee删除对_tag_fields部分的调用,那么我只是尝试编辑_form上的标记,所有标记字段都会填充标记从第一次活动开始。我不确定这里发生了什么,所以任何帮助都将不胜感激。

我的声誉也很缺乏,我不能包含2个以上的链接,所以如果有人能够重新格式化这篇帖子。

0 个答案:

没有答案