.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;
});
});
なぜこれが起こるのか、この関数をどのように再定義すればよいのかを理解するのを手伝ってもらえますか?