首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >js.erb不能在rails 6中渲染

js.erb不能在rails 6中渲染
EN

Stack Overflow用户
提问于 2020-12-10 03:17:35
回答 1查看 463关注 0票数 3

我在从操作中呈现.js.erb时遇到了问题。动作会触发,rails告诉我它正在呈现js.erb,但js从未呈现过,并且从js中的控制台日志中可以明显看出它没有呈现到浏览器的控制台。我在网上尝试了一堆解决方案,但似乎找不到为什么rails会告诉我这个js模板正在呈现,而不是让它真正在浏览器中呈现。我能错过什么呢?

控制器操作

代码语言:javascript
复制
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终端输出

代码语言:javascript
复制
  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 easy-autocomplete测试调用)

代码语言:javascript
复制
document.addEventListener("turbolinks:load", function() {

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

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

    $input.easyAutocomplete(options);
});
EN

回答 1

Stack Overflow用户

发布于 2020-12-11 03:54:47

easy-autocomplete期望dynamic_search返回可解析的数据(JSON或XML)。

它实际上并没有在当前上下文中运行"dynamic_search.js.erb“中的js。这意味着要么"dynamic_search.js.erb“的内容需要在呈现之后表示这样的对象,要么最好是dynamic_search操作直接呈现它。

例如(我将假设您希望在@result中使用easy-autocomplete )

代码语言:javascript
复制
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可以是:

代码语言:javascript
复制
document.addEventListener("turbolinks:load", function() {
    $input = $('*[data-behavior="autocomplete"]')
    var options = {
        url: function(phrase){
            console.log(phrase)
            return `/search/${phrase}`
        }
    }
    $input.easyAutocomplete(options);
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65223464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档