我有一个项目列表和一个边栏,其中显示有关项目的详细信息。侧边栏是一个局部的,当 onmouseenter 事件在列表中的某个项目上被触发时,它应该随着 Ajax 的变化而改变。
我已经设法通过 Ajax 将(我输入鼠标的项目的)id 发送到我的控制器的操作“列表”,但部分没有更新...... :(
我确信我非常接近解决方案。我是 Ajax 新手,整个下午我都在 StackOverflow 和许多其他网站上进行了搜索,但他们总是解释如何使用 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
- 火腿:
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
在第二部分里面,我有 div.item 包装了所有东西。所以基本上,我想更新侧边栏的内容,仅此而已。
对不起,如果这个问题看起来很愚蠢,并提前感谢您的帮助。
感谢Ogz向导,问题解决了!XD