Входной токен jQuery не отображает метки данных - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь использовать камень jQuery token-input в своем приложении rails. Я получил это работает, как ожидалось, за исключением части загрузки данных. Когда я создаю plan с несколькими materials и сохраняю его, он создает запись, как и предполагалось.

Когда я возвращаюсь к редактированию этого плана, никакие материалы не отображаются. Однако данные предварительно загружаются в браузер, как я вижу из исходного кода, показанного ниже.

<input data-tokeninput="{&quot;collection&quot;:[{&quot;id&quot;:2,&quot;title&quot;:&quot;test&quot;,&quot;goal&quot;:&quot;test&quot;,&quot;material_type&quot;:&quot;test&quot;,&quot;sharing&quot;:false,&quot;description&quot;:&quot;test&quot;,&quot;unit_id&quot;:null,&quot;created_at&quot;:&quot;2018-04-24T21:40:58.000Z&quot;,&quot;updated_at&quot;:&quot;2018-04-24T21:40:58.000Z&quot;,&quot;grade_id&quot;:6,&quot;user_id&quot;:1,&quot;subject_id&quot;:6,&quot;attachment_file_name&quot;:null,&quot;attachment_content_type&quot;:null,&quot;attachment_file_size&quot;:null,&quot;attachment_updated_at&quot;:null}]}" type="text" name="plan[material_tokens]" id="plan_material_tokens" style="display: none;">

Кто-нибудь знает, почему это не отображает данные в поле?

Plans.coffee

jQuery ->
  $('#plan_material_tokens').tokenInput('/materials.json', { propertyToSearch: 'title' });
  prePopulate: $('#plan_material_tokens').data('load')

_form.html.erb

<%= form_for @plan do |form| %>
  <div class="form-group">
    <%= form.label :name %>
    <%= form.text_field :name, class: 'form-control' %>
  </div>

  <div class="form-group">
    <%= form.label :material_tokens, "Materials" %>
    <%= form.text_field :material_tokens, data: { load: @plan.materials }%>
  </div>

  <%= form.submit %>
<% end %>

Контроллер материалов (откуда он извлекает данные json)

def index
  @materials = current_user.materials

  respond_to do |format|
    format.html
    format.json { render json: @materials.where("title LIKE ?", "%#{params[:q]}%") }
  end
end

1 Ответ

0 голосов
/ 07 мая 2018

Для всех, у кого есть эта проблема, это решение, которое помогло мне. Вместо того, чтобы загрузчик данных назывался load, измените его на pre, как показано ниже.

_form.html.erb

<div class="form-group">
  <%= form.label :material_tokens, "Materials" %>
  <%= form.text_field :material_tokens, data: { pre: @plan.materials.to_json }%>
</div>

plans.coffee

jQuery ->
  $('#plan_material_tokens').tokenInput('/materials.json', { propertyToSearch: 'title' })
  zindex: 6000
  allowCustomEntry: false
  preventDuplicates: true
  prePopulate: $("#plan_material_tokens").data('pre')

Я собираюсь провести дальнейшее исследование того, почему это так, и продолжу в этом ответе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...