0

人のリストを表示する Rails アプリがあります。

  1. 名前をクリックすると、調整可能なjqueryスライダーバーを使用して、ajax呼び出しによってもたらされたdivが表示されます。

  2. その後、その div を閉じることができます。

  3. (同じユーザーに対して)もう一度開くと、ajax呼び出しが戻って、スライダーでdivを取得します

  4. スライダーバー以外はすべてそこにあります。なぜ?

コード: index.html 内で、div が呼び出されます

<div id='relationships'>
  <%= render @relationships %>
</div>

divには部分があります。ここに部分的な _relationship.html.erb があります

<%= div_for relationship do %>
  <%= link_to image_tag('images/orange_man.jpg'), show_path(:id => relationship.id), :remote => true %>
<% end %>

画像「orange man」をクリックすると、js リクエストが show アクションまで進みます。

def show
  @relationship = Relationship.find(params[:id])
  respond_to do |format|
    format.html
    format.js
  end
end

そしてjs呼び出しなので、show.js.erbが呼び出されます

$("#relationship_<%= @relationship.id %>").append("<%= escape_javascript(render 'knows_me')%>");

know_me パーシャルが呼び出されています。_knows_me.html.erb

<div id ="relationship_knows_me_#{@relationship.id}">

  <a class="close">X</a> 
  *****this is where you click to hide the div*****

  <% div_slider_id = "slider_knows_me_#{@relationship.id}" %>

  <%= form_tag('/relationships/update/', :remote => true) do %>

    <%= hidden_field_tag 'relationship_id', value = @relationship.id %>

    <div id="<%= div_slider_id %>" class="sliders"></div>

  <% end %>

</div>

<script type='text/javascript'>

$('a.close').on("click", function() {
    $(this).parent().slideUp();
  });

$(document).ready( function() {
  $(function() {
    $( "#<%= div_slider_id %>" ).slider({
      orientation: "horizontal",
      range: "min",
      value: <%= @knows_me %>,
      min: 0,
      max: 100,
      stop: function( event, ui ) {
        $( "#<%= amount_id %>" ).val( ui.value );
        $(this).submit();
      }
    });
 });
});
</script>

スライドが最初にしか表示されないのはなぜですか? div をスライドアップして再度リクエストした後に表示されないのはなぜですか?

前もって感謝します

4

2 に答える 2

0

スーパーエンジニアはちょっと正しかったことがわかりました。div の id は既に存在していたので、非表示にしたため、再び表示されることはありません。コールバックを取得して問題を解決するときに、divのIDを変更しました。

于 2012-08-22T20:26:05.480 に答える
0

div id を使用する代わりに、div クラスを使用します。私は同じ問題を抱えていましたが、divクラスを使用した後に解決されました

于 2012-05-03T14:38:09.430 に答える