gpt4 book ai didi

javascript - js.erb 不在 Rails 6 中渲染

转载 作者:行者123 更新时间:2023-12-04 15:10:54 26 4
gpt4 key购买 nike

我在从 Action 中渲染 .js.erb 时遇到问题。 Action 触发,rails 告诉我它正在渲染 js.erb,但 js 从未被渲染,并且从控制台日志中可以明显看出 js 没有渲染到浏览器的控制台。我在网上尝试了一堆解决方案,但似乎无法找出为什么 rails 会告诉我这个 js 模板正在渲染,但实际上并没有在浏览器中渲染。
我会错过什么?
Controller Action

def dynamic_search
puts "WE ARE IN DYNAMIC_SEARCH"
puts params[:q]
client = HTTPClient.new
string = 'call to google places api'
@result = client.get_content(string)
@hash = JSON.parse @result

render "home/dynamic_search.js.erb", format: :js
end
Rails 终端输出
  Rendering home/dynamic_search.js.erb
Rendered home/dynamic_search.js.erb (Duration: 0.0ms | Allocations: 4)
Completed 200 OK in 479ms (Views: 0.7ms | ActiveRecord: 0.0ms | Allocations: 4613)
更新:
调用该操作的代码如下(不是 100% 正确,目前只是使用 JQuery 轻松自动完成测试调用)
document.addEventListener("turbolinks:load", function() {

$input = $('*[data-behavior="autocomplete"]')

var options = {
url: function(phrase){
console.log(phrase)
return '/search/' + phrase
}
}

$input.easyAutocomplete(options);
});

最佳答案

easy-autocomplete期待 dynamic_search返回可解析的数据(JSON 或 XML)。
它实际上并没有在当前上下文中运行“dynamic_search.js.erb”中的 js。这意味着“dynamic_search.js.erb”的内容需要在渲染后表示这样的对象,或者最好是dynamic_search。 action 应该直接渲染它。
例如(我假设你想使用 easy-autocomplete@result )

def dynamic_search
puts "WE ARE IN DYNAMIC_SEARCH"
puts params[:q]
client = HTTPClient.new
string = 'call to google places api'
@result = client.get_content(string)

render json: @result
end
我不确定 @result 是什么json 实际上看起来像这样,因此您可能需要在上方或下方进行额外的操作。
那么js可能是:
document.addEventListener("turbolinks:load", function() {
$input = $('*[data-behavior="autocomplete"]')
var options = {
url: function(phrase){
console.log(phrase)
return `/search/${phrase}`
}
}
$input.easyAutocomplete(options);
});

关于javascript - js.erb 不在 Rails 6 中渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65223464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com