[英]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.