私は最近 Rails 3.2 を使い始めましたが、アプリにいくつかの ajax 機能を実装しようとしているときに立ち往生しています。この railscast を完全にフォローしました (http://railscasts.com/episodes/240-search-sort-paginate-with-ajax)。これを超えて、各製品にショートリスト ボタンを実装し、ユーザーが製品をショートリストしてセッションに保存できるようにしたいと考えています。また、最終選考に残った製品の小さなリストを同じページに表示したいので、ajax を更新する必要があります。
私はそれを行うための最良の方法は何だろうと思っています。現在、リンクをショートリスト/非ショートリストに変更するために、リモート タグとヘルパー関数を使用して link_to ボタンを実装しています。また、条件付き div を使用して、ショートリストの長さに基づいてショートリストを表示しました。ただし、問題は、ショートリストを作成するたびに、products テーブルの順序もリセットされることです。
ここに私のコードのスニペットがあります:-
Application_helper.rb
def shortlist_unshortlist_link(product_id )
if (user_session.already_shortlisted? product_id )
link_to 'Unshortlist', { action: 'unshortlist', id: product_id }, remote => 'true'
else
link_to 'Shortlist', { action: 'shortlist', id: product_id }, remote => 'true'
end
end
def shortlist_div
shortlist=user_session.shortlist
if (user_session.shortlist.length > 0)
render :partial => 'pages/shortlist_fields'
end
end
製品/index.html.erb
<div id="product">
<% @products.each do |product| %>
<tr>....
<td><%= shortlist_unshortlist_link(product.id.to_s) %></td>
</table>
</div>
<div class="shortlist"><%= shortlist_div() %> </div>
products_controller.rb
def shortlist
user_session.add_to_shortlist(params[:id])
redirect_to products_path
end
def unshortlist
user_session.remove_from_shortlist(params[:id])
redirect_to products_path
end
問題はredirect_toが原因だと思いますが、機能を損なわずにこれを回避する方法がわかりません。私はここで完全に間違った道を進んでいますか?これはこれを実装する良い方法ですか。助言がありますか。
ありがとう、アミット