2017-09-15 4 views
0

私はKaminari gemを使用してアプリケーションに無限のスクロールを実装しています。私が抱えている問題は、コントローラにAjaxコールで毎回検索パラメータを渡すことです。Railsページ分割 - Ajaxデータ入力(パラメータ付き)

def create 
@onsearch = true 
@lists = current_user.lists.all 
@search = params[:search] 
@page = params[:page] 
puts "Search is #{@search}, page is #{@page}" 
@outfits = Oufits.where("description LIKE ?", "%#{params[:search]}%").page(params[:page]).per(20) 
respond_to do |format| 
    format.html 
    format.csv { send_data @outfits.to_csv } 
    format.xls 
    format.js {render :layout => false } 
end 

エンド

これは、ユーザーがページの一番下までスクロールしたときに、私は呼んでアヤックスである:私は正常に動作しているのJavascriptで応答したときに、私は、レンダリングすることを

$.ajax({ 
    type: "GET", 
    url: url, 
    data : { search : '<%= @search %>'}, 
    dataType: 'script', 
    beforeSend: function(){ 
    $('.sk-wave').show(); 
    }, 
    complete: function(){ 
    $('.sk-wave').hide(); 
    }, 
    success: function(response){ 
    $('.sk-wave').hide(); 
    }, 
    error: function(jqXHR, textStatus, errorThrown){ 
    alert("oh no! ajax went wrong.") 
    $('.sk-wave').hide(); 
    console.log("jqXHR = "+JSON.stringify(jqXHR)); 
    console.log("textStatus = "+JSON.stringify(textStatus)); 
    console.log("errorThrown = "+JSON.stringify(errorThrown)); 
    } 
    }); 
} 

部分と追加されますページのコンテンツの残りは完全に..

$('.pagecontent').append("<%=j render(partial: 'search/outfits', 
format: 'html') %>"); 

<% if @outfits.current_page == @outfits.total_pages %> 
$('#view-more').remove(); 
<% else %> 
$('#view-more a').attr('href', '<%= url_for(page: 
@outfits.current_page + 1) %>'); 
<% end %> 

しかし、検査時にはamは私のコントローラのリテラル文字列 '<%= @search%>'として受信されます。私はjavascriptにerb変数を渡す方法をGoogleが持っているが、それは私がしようとしているものにはあまりにも複雑に思えます。どのようにすれば、毎回それが通過することを確認できますか?

'<%= @search %>' doesntのは、あなたが期待どおりに動作:あなたの助け

+0

どこにajaxコードを入れましたか?どのファイルですか? – EJ2015

答えて

1

ためのおかげであなたは、いくつかの問題を抱えています。 app/assetsのアセットファイルは、アプリケーションをデプロイするときにサーバー上にプリコンパイルされるため、ビュー変数にアクセスできません。 ajaxに変数を渡すこと

<input type="hidden" id="foo" name="zyx" value="<%= @search %>" /> 
var value = $('input#foo').val() 

@searchの値とhidden_inputを使用し、jqueryことによってそれをフェッチします。

"GET"本文がありません。つまり、dataというキーがクエリ文字列として渡されます。

"POST"を使用してください。

+0

ありがとうございました - 私はちょうど私のJSをapp/assetsディレクトリに移動しましたので意味があります! –

+0

@Iaaacは私の知らないことですが、 'create.js.erb'ファイルの' create'アクションから '@ search'変数を持つことは可能でしょうか。私は一種の質問をしています。申し訳ありません、http://guides.rubyonrails.org/working_with_javascript_in_rails.html#server-side-concerns –

関連する問題