rails - 使用AJAX处理布局content_for

时间:2010-11-14 21:59:32

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

我有一个应用程序布局模板:

<%= yield(:railed) %>

处理右侧导轨中的接触(右侧列300px)。在实际的DEF SHOW页面中,我使用:

<%- content_for(:railed) do -%>
HTML STUFF goes here
<%- end -%>

我现在遇到的问题是,对于我的一个控制器,我使用AJAX来点击DEF Show,并将内容注入页面。这项工作很好,因为它没有得到railed内容,因为format.js响应中没有使用布局模板。

因此,我可以通过AJAX请求获得railed contet显示的智能方式,而不必写入AJAX和amp;的单独页面。非AJAX(直接URL)。

思考?我知道一些Rails天才已经想到了这一点:)

我的控制器:

  def show
    @thing = Thing.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.js
    end
  end

show.js.erb:

<%= render :partial =>"thing/show" %>

1 个答案:

答案 0 :(得分:1)

这有点像黑客,但这就是我在rails 3.1中使用haml和jquery的方式:

show.html.haml:

- if request.xhr?
  #content_for_sidebar.hidden
    =@view_flow.get(:sidebar)

ajax_callbacks.js:

$("#nav a[data-remote]").live('ajax:complete', function(status, xhr) {
  $($(this).attr('rel')).html(xhr.responseText);
  $('#sidebar').html($("#content_for_sidebar").html());
  $("#content_for_sidebar").remove();
});