在AJAX调用之后,我无法在视图中看到结果

After AJAX call I can't see the result in my view

本文关键字:视图 结果 AJAX 调用 之后      更新时间:2023-09-26

我使用Rails 4工作,基本上我正在用jquery遍历DOM的html网页上搜索值。我将值存储在一个名为的变量中,我想使用这个值然后发出一个请求,看起来像这样:Record.find(id: key).name

我有一个用户和一个记录模型。在app/views/users目录中,我有部分_form.html.erb,其中我正在做一些javascript。

var key = $('input#record_id').val();

我希望这个变量在我的用户控制器的search方法中可用,这样我就可以用参数发出请求。

所以我正在做一个AJAX调用,看起来像这样:

$('#example tbody').on('click','tr', function(){
  
    var key = $(this).val();
    
    $.ajax({
      url: "/search",
      type: "POST",
      data: {
        key: key 
      },
      complete: function(){
        console.log('success');
      }
      });
});

在我的配置路由文件我写了这个路由:

post '/search' => 'users#search'

在我的User控制器中,我这样写方法:

def search
  @record = Record.find(params[:key])
end 

然后我创建了一个search.js.erb文件,它的名称与控制器中的方法相同。在这个文件中我写:

$('div#result').html("<%= @record.name %>");

但是当我点击表格中的一个元素时div

没有显示

我已经做了很多console.log()来查看我的变量中的内容,并且可以确定其中有正确的值。此外,我的Ajax调用在我的控制台日志中工作,它返回'成功',在选项卡网络中,我可以看到名为search的任务状态为'ok'。

我有错误500,但我修复了它添加render json: 'ok'在我的方法搜索

现在我是如此接近打印我的请求@record.name的结果,但我不能设法找到解决方案。

谁能给我解答?欢迎任何帮助

控制器有一个默认返回html的约定。在本例中,看起来您想要返回.js。erb部分。为此,你需要将控制器配置为返回一个js响应。

def search
    @record = Record.find(params[:key])
    respond_to do |format|
        format.js {}
    end
end 

respond_to块中的format.js将把控制器指向你的.js。erb部分。如果失败,则发布服务器输出日志的结果,我认为该日志将被写入本地运行应用程序的终端/控制台。