如何在 RAILS 上发出异步 GET 请求并仅获取视图表单(而不是整个正文和标头)



我在我的rails应用程序上创建了一个简单的异步jquery函数,这样我就可以在"display"div上打印响应。但是当我向我的 rails url 发出 GET 请求时,它会响应整个 html:"body"、"head"和"include",就好像它是浏览器上的新页面一样,因此结果来源如下:

在我按下按钮之前:

<html>
  <head>
    <title>Myapp1</title>
  </head>
  <body>
      <button onclick="callPage()">Call</button>
      <div id="display"></div>
  </body>
<html>

在我按下按钮并且"显示"div 充满我的响应后:

<html>
      <head>
        <title>Myapp1</title>
      </head>
      <body>
          <button onclick="callPage()">Call</button>
          <div id="display">
             *<html>
               <head>
                 <title>Myapp1</title>
               </head>
               <body>
                 -----Content of page user/1 which is the only thing I want to get.------
               </body>
             <html>*
          </div>
      </body>

我在routes.rb(RUBY ON RAILS)上给用户的路线工作正常

  resources :users
  #get 'welcome/index'
  match ':controller(/:action(/:id))', :via => :get

我的Jquery GET调用页面(工作正常)

<script>
         function callPage()
    {   
        url="user/1";
        div="display";
        $.ajax({
            type: "GET",
            dataType: "text",
            url: url,
            success: function(msg){
                if(parseInt(msg)!=0)
                {
                    $("#"+div).html(msg);
                }
            }   
        }).setRequestHeader('X-CSRF-Token', AUTH_TOKEN);
    }
        </script> 

问题是我如何防止 RAILS 打印出所有 html 标记(body、heads,...),并让它只打印我想要的控制器(在本例中为用户)的视图。 ¿它是某处的配置还是我以某种方式挥手修剪它?

提前感谢一百万的时间。

要仅显示视图,您必须更改控制器操作以在末尾具有渲染布局:false。这将阻止布局呈现,仅保留视图文件中的内容。

例如:

class YourController < ApplicationController
  def show
    # bla bla
    render 'your_show_view_name', layout: false
  end
end

如果您希望所有控制器操作都具有此行为,则可以将其放在顶部

class YourController < ApplicationController
  layout false
  def show
    # bla bla
  end
end

相关内容

最新更新