1

.js.erbちょっと、ファイル内で奇妙な予期しない動作に直面しました。関連するコードとスニペットが提供されており、問題を理解するのに役立ちます。

orders_controller関数 advanced_search の部分的なスニペットのみ

def advanced_search
  @filters = params[:filters] || {}
  @is_ajax_search = true

  if @filters.present?
    response = RestClient.post "my_url/orders/" +@filters.to_json      
    @orders = JSON.parse response.body
    logger.debug [params[:offset], params[:limit], @orders["total"]]
    limit = params[:limit] = 50

    @orders["order_items"] = @orders["order_items"].paginate(
      :page => params[:page],
      :per_page => limit,
      :total_entries=>@orders["total"]
    )

    @title = "Advanced Search"
    render
  end
end

orders/advanced_search.html.erb

<%# debug @orders %>
<% content_for :head do %>
  <%= javascript_include_tag 'advanced_search_oms',  %>
<% end %>
<%= render "advanced_search_orders_form" %>
<div id="advanced_search_orders_table" class="fk-table ajax">
  <%= render "advanced_search_orders_table" %>
</div>

orders/_advanced_search_orders_table

<%= will_paginate @orders["order_items"] %>

javascripts/advanced_search_oms

$(function () {
  $('.pagination a').click(function () {
    alert("The url will no longer change")
    return false;
  });
});

advanced_search.js.erbしかし、インスタンス変数を使用する必要があるため、実際には でこの関数を定義したいと考えています。

orders/advanced_search.js.erb

alert("Hello") //Works when a page link is clicked using the will paginate. But is not displayed when the page is loaded. I wonder why?
$(function () {
  alert("Dom is loaded") //Woks like previous alert. Only on page click.
  $('.pagination a').click(function () {
    alert("The url shouldn't change") //But it does. NO ALERT BOX even pops up. It's as if the function doesn't exist.
    <%= logger.info "Entered js" %> //But this worked
    return false;
  });
});

なぜこれが起こるのか、この関数をどのように再定義すればよいのかを理解するのを手伝ってもらえますか?

4

0 に答える 0