【问题标题】:Update partial with Ajax in Rails 3在 Rails 3 中使用 Ajax 更新部分内容
【发布时间】:2012-04-22 04:35:43
【问题描述】:

我有一个项目列表和一个边栏,用于显示项目的详细信息。侧边栏是局部的,当 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 包装了所有东西。 所以基本上,我想更新侧边栏的内容,仅此而已。

对不起,如果这个问题看起来很愚蠢,并提前感谢您的帮助。

感谢奥格兹巫师,问题解决了!呵呵

【问题讨论】:

    标签: ruby-on-rails ajax ruby-on-rails-3 partials


    【解决方案1】:

    您需要传递一个回调函数来处理来自您的 AJAX 请求的响应。见http://api.jquery.com/jQuery.post/

    一个例子可能如下所示:

    $.post(url, data, function(response_data){ $("#sidebar_id").replaceWith(response_data) });
    

    【讨论】:

    • 所以我猜 response_data 是:render :partial => "item/sidebar/sidebar_home", :object => @item ?
    • 是的,效果很好,我将使用最终解决方案编辑我的帖子。非常感谢 Ogz 巫师拯救了我的一天!
    • 是的,在您的情况下,数据将是响应中的 HTML。很高兴它有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多