2017-01-03 8 views
0

私は、Ajaxコードを持っています。しかし、私はアクションにソートパラメータを渡すことが可能であるか見当がつかないajaxリクエストを控えめなjavascriptに変換するには?

この

select#books_order data-remote="true" data-url="/books/#{@book.id}" data-method="get" 
    option value='desc' Descending 
    option value='asc' Ascending 

のようなものに解釈できる

$('select#books_order').on('change', function() { 
    $.ajax({ 
    url: "/books/#{@book.id}", 
    type: 'GET', 
    dataType: 'script', 
    data: { 
    sort: $('#books_order option:selected').val() 
    } 
    }); 
}); 

。最初の例では、選択されたオプションを取得するためにJQueryを使用していますが、2番目の例ではパラメータなしでリクエストが送信されます。

+0

はスリムは実際にこれを行うには何も持っていますか? –

+0

@cale_b理解のために使用しました –

+1

JavaScriptを 'assets'に移動し、' book_id'を 'data'属性で渡すだけです(http://railscasts.com/episodes/324-渡すデータをjavascriptにするview = asciicast) – AbM

答えて

1

data-urlにURLパラメータを追加できます。

select#books_order data-remote="true" data-url="/books/#{@book.id}?sort=desc" data-method="get" 

また、隠しフォームを作成して変更依頼すると、フォーム/アクションをujs経由でsortパラメータとともに送信できます。

JS:あなたのビュー/フォームで

$('#books_order').on("change blur", function() { 
    // Submit form 
    $(this).trigger('submit.rails'); 
}); 

あなたのコントローラで
<%= form_tag book_path(@book) do %> 
    <%= select_tag :sort, options_for_select([['Descending', 'desc'], ['Ascending', 'asc']]) 
<% end %> 

params[:sort] 
+0

ありがとうございました! –

関連する問題