2

モデルのタグ付けメカニズムとしてjQuery Tokeninputを実装しましたがChain、すべてうまく機能します。現在、複数のモデルで機能するようにタグ付けフィールドを抽象化しようとしていますが、データを正しく prePopulate できません。nested_formプラグインも使用しています。

前提は、私​​のChainhas_manyでEventsあるため、 a を編集するときに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タグが prePopulated されます。ここから保存すると、すべてのタグがタグとともに保存されます。<%= f.text_field :tag_tokens, data:..._tags_fieldsEventChain

いずれかのイベントでタグ フィールド要素を調べると、HTML は、タグ リストが のタグで構成されていることを示していますが、指定された for のChain直後は、すべての正しいタグを含むハッシュです。</ul>Event<input class="js-tokenizer" data-load="[{......

これは、Rails と JS の初心者である私に、問題が のprePopulate関数にあることを示していますchains.js.coffee_tag_fieldsまた、からパーシャルへの呼び出しを削除すると_form、 のタグを編集しようとするとEvents、すべてのタグ フィールドに最初のイベントのタグが入力されます。ここで何が起こっているのかわからないので、どんな助けでも大歓迎です。

また、私の評判に欠けているため、2 つ以上のリンクを含めることはできません。そのため、誰かがこの投稿を再フォーマットするように親切にできる場合.

4

0 に答える 0