我使用Rails 4,基本上我在我的html网页上搜索一个用jquery遍历DOM的值。我将值存储在名为 key 的变量中,我想使用此值然后发出如下所示的请求:
Record.find(id: key).name
我有用户和记录模型。在app/views/users
目录中,我有部分_form.html.erb
我正在做一些javascript。
var key = $('input#record_id').val();
我希望此变量在我的用户控制器的方法搜索中可用,以便我可以使用参数键发出请求。
所以我正在做一个看起来像这样的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调用在我的控制台日志中起作用,它返回“成功”,在标签网络中,我可以看到名为search的任务,状态为“ok”。
我有错误500,但我修正了在我的方法中添加render json: 'ok'
搜索
现在我非常接近打印请求@record.name
的结果,但我无法找到解决方案。
有人能给我解决方案吗?欢迎任何帮助。
答案 0 :(得分:0)
控制器默认返回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部分。如果失败,请发布服务器输出日志的结果,我想这正在写入您在本地运行应用程序的终端/控制台。