繁体   English   中英

在AJAX通话之后,我看不到结果

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

我使用Rails 4,基本上我正在用jQuery遍历DOM的html网页上搜索一个值。 我将该值存储在一个名为key的变量中,然后我想使用该值发出如下请求: Record.find(id: key).name

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

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

而且我希望该变量在用户控制器的方法搜索中可用,以便可以使用参数key发出请求。

所以我正在做一个看起来像这样的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'

在我的用户控制器中,我编写了这样的方法:

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

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

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

但是,当我单击表格的一个元素时,div中没有​​任何内容

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

我有错误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 

response_to块中的format.js将控制器指向您的.js.erb部分。 如果失败,请发布服务器输出日志的结果,我想该日志将写入您在本地运行应用程序的任何终端/控制台。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM