JQuery с рельсами. Шоу работает только в первый раз в итеративном до - PullRequest
1 голос
/ 13 февраля 2012

Привет! Я использую jQuery с направляющими 3 для отображения или не одного и того же div с разными данными для каждой итерации.Это мой код:

    <% @event.event_criterias.each do |event_criteria| %>
    <p>
    <table>
    <% cont = 1 %>
    <% form_for event_criteria do |f| %>

        <%= f.hidden_field :event_id %>
        <%= f.hidden_field :is_free %>
        <%= f.hidden_field :is_exclusive %>

        <tr>
            <td width="150px">
                <%= f.label :name, event_criteria.name%>        
            </td>
            <td>
                <%= f.text_field :name%>
            </td>   

        <td><%= f.submit "Update name", :disable_with => 'Updating name...'%></td>
        <td><%= link_to '[delete]', event_criteria, :confirm => 'Are you sure?', :method => :delete %></td>

        <% if !event_criteria.is_free and !event_criteria.is_exclusive %>
            <td>Show options <%= check_box_tag 'show_event_criteria_options'+cont.to_s, 'event_criteria_options'+cont.to_s, false, :class => 'check_buttons' %></td>

            <% cont += 1 %> 
            <td> <%= link_to 'Create options', new_event_criteria_option_path(:event_criteria_id => event_criteria.id) %> </td>
        <% end %>

        </tr>
        </table>

        <div id="event_criteria_options"+<%= cont.to_s%> style="display: none;" >
            <%= link_to 'Create option', new_event_criteria_option_path(:event_criteria_id => event_criteria.id) %>
            <% if event_criteria.is_free == false and event_criteria.is_exclusive == false %>
            <p>Options: </p>
            <table>
            <% event_criteria.event_criteria_option.order('value').each do |event_criteria_option| %>
              <tr>
                <td><%= link_to event_criteria_option.value, event_criteria_option_path(event_criteria_option) %></td>
                <td><%= link_to '[delete]', event_criteria_option, :confirm => 'Are you sure?', :method => :delete %></td>
              </tr>
            <% end %>
            </table>
            <% end %>
            <% end %>
        </div>

        <% if !event_criteria.is_free && !event_criteria.is_exclusive && event_criteria.event_criteria_option.size == 0 %>
            <p><i> No options defined! </i></p>
        <% end %>


<% end %>

<% end %>

И мой код jQuery:

    $(document).ready(function(){
   $(".check_buttons").click(function(){
    var divname = this.name;
    var divvalue = this.value;
      if ($("#"+divname).attr("checked")){
         $("#"+divvalue).show("slow");
      }else{
         $("#"+divvalue).hide("slow");
      }
   });
});

Проблема заключается в том, что отображается только div id = event_criteria_option + <% = cont.to_s%>, когда я проверяюПервый флажок.Когда я проверяю другие флажки, он ничего не отображает.В чем ошибка?

1 Ответ

2 голосов
/ 13 февраля 2012

Следующая строка

<div id="event_criteria_options"+<%= cont.to_s%> style="display: none;" >

должна быть

<div id="event_criteria_options<%= cont.to_s%>" style="display: none;" >

Поскольку вам необходимо использовать 'cont.to_s' внутри двойных кавычек идентификатора HTML.

Также включеноПримечание: вы должны знать, что ruby ​​условно "&&" - это не то же самое, что работа с ключами "and".Вы можете изменить это в строке, которая выглядит следующим образом:

<% if !event_criteria.is_free and !event_criteria.is_exclusive %>

Подробнее об этом здесь .

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