Как сохранить атрибут, который переопределяется как ноль?

ranking сохраняется только в том случае, если пользователь сохранил его под заметкой, которая была первой в хронологическом порядке.

введите здесь описание изображения

вызовы/шоу

<% @challenge.dates_challenged.first(@challenge.days_challenged + @challenge.missed_days).each_with_index do |date, i| %>
  <% if @notes.any? { |note| note.notes_date.strftime("%m/%d/%y") == date.strftime("%m/%d/%y") } %>
    <% @notes.each do |note| %>
      <% if note.notes_text.present? %>
        <% if note.notes_date.strftime("%m/%d/%y") == date.strftime("%m/%d/%y") %>
          <div class="notes-notes-background">
            <% if note.ranking == 1 %>
              <%= image_tag '1.png', class: 'note-emoticon' %>
            <% elsif note.ranking == 2 %>
              <%= image_tag '2.png', class: 'note-emoticon' %>
            <% elsif note.ranking == 3 %>
              <%= image_tag '3.png', class: 'note-emoticon' %>
            <% elsif note.ranking == 4 %>
              <%= image_tag '4.png', class: 'note-emoticon' %>
            <% end %>
            <div style="font-weight: bold; font-size: 14px; color: #a0b4f0;">DAY <%= i + 1 %></div>
            <b><%= note.notes_date.strftime("%b %d, %Y") %></b><br><br>
            <div style="margin-left: 20px; margin-right: 20px;">
              <%= link_to edit_note_path(note) do %>
                <%= simple_format note.notes_text %>
              <% end %>
            </div>
          </div>
        <% end %>
      <% else %>
      <% end %>
    <% end %>
  <% else %>
    <div class="notes-form-background" style="padding-top: 1em;">
      <div style="margin-bottom: -19px; color: #a0b4f0; font-weight: bold; font-size: 14px; color: #a0b4f0;">DAY <%= i + 1 %></div><br>
      <div style="color: #eee;"><%= date.strftime("%b %d, %Y") %></div>
      <div style="margin-left: 20px; margin-right: 20px;">
        <%= render 'notes/form', :date => date %>
      </div>
    </div>
  <% end %>
<% end %>

заметки/форма

<%= form_for [@notable, @note] do |f| %>
  <%= f.hidden_field(:ranking, id: 'ranking') %>
  <%= image_tag('1.png', data: { ranking: 1 }, class: 'image-clicker') %>
  <%= image_tag('2.png', data: { ranking: 2 }, class: 'image-clicker') %>
  <%= image_tag('3.png', data: { ranking: 3 }, class: 'image-clicker') %>
  <%= image_tag('4.png', data: { ranking: 4 }, class: 'image-clicker') %>
<% end %>

<script>
  $('.image-clicker').click(function() {
    $('#ranking').val($(this).data('ranking'));
    $('.clicked').removeClass('clicked')
    $(this).addClass('clicked');
  });
</script>

Все остальное из заметки сохраняется, например text, но не ranking.


person AnthonyGalli.com    schedule 01.06.2016    source источник


Ответы (1)


Вы можете иметь только ОДИН и только ОДИН html-идентификатор с тем же именем на странице. В вашем случае все ваши скрытые поля имеют одинаковый идентификатор #ranking.

Ваш селектор jQuery выберет первое. Что объясняет, почему вы столкнулись с проблемой.

Просто дайте своему скрытому полю класс и внутри вашей функции щелчка найдите дочерние элементы для скрытого поля ранжирования.

person Abdo    schedule 01.06.2016
comment
Вау, мне нравится такое простое решение, ха-ха, и подумать, сколько часов я только что потратил на это. Спасибо за вашу помощь :) - person AnthonyGalli.com; 02.06.2016
comment
Рад слышать, что это помогло! Кстати, вам нужно немного упростить код. У тебя жирный вид. Кроме того, не помещайте скрипты в представления И не помещайте туда стили =) Удачи! - person Abdo; 02.06.2016