アイテムのリストと、アイテムの詳細を表示するサイドバーがあります。サイドバーは部分的なものであり、リストのアイテムでイベントonmouseenterがトリガーされたときにAjaxで変更する必要があります。
(マウスを入力したアイテムの)IDをAjaxを介してコントローラーのアクション「リスト」に送信できましたが、部分的に更新されていません... :(
私は解決策に非常に近いと確信しています。私はAjaxを初めて使用し、StackOverflowや他の多くのWebサイトで午後中ずっと検索しましたが、AjaxでCRUDアクションを管理する方法を常に説明しており、うまくいかないようです...
コードは次のとおりです。
-ajax部分:
$("div.item").mouseenter(function(event){
var id = $(this).attr('data');
var url = "/item/list?id="+id+"&lg=en";
var data = $(this).serialize();
$.post(url,function(response_data){$("#item_details").html(response_data)});
return false;
});
-コントローラーのアクション:
def list
@items = Item.all
if request.xhr?
id_exists?("item", params[:id], "item", "list"){@item = Item.find(params[:id])}
render :partial => "item/sidebar/sidebar_home", :object => @item
else
@item = @items.first unless @items.empty?
end
end
-haml:
content_for :sidebar do
#item_details
=render :partial => "item/sidebar/sidebar_home", :object => @item
.items_wrapper
-if @items.empty?
="No items"
-else
= render :partial => "item/partials/item", :collection => @items
2番目のパーシャルの中には、すべてをラップするdiv.itemがあります。基本的に、サイドバーの内容を更新したいのですが、それだけです。
質問がばかげているように思われる場合は申し訳ありませんが、事前にご協力いただきありがとうございます。
Wizard of Ogzに感謝します!XD