【问题标题】:ruby on rails vue and html.slimruby on rails vue 和 html.slim
【发布时间】:2019-07-13 12:05:19
【问题描述】:

我已经启动了一个 ruby​​ on rails 应用程序。在这个中,我们可以找到一个搜索栏。此外,结果以 json 格式返回。并且视图由 vue 更新。

第一次我的控制器

  def index
if params[:search].nil?
  render 'index'
else
  @organisations = Organisation.search(params[:search])
  respond_to do |format|
    format.json do
      render json: {
        organisations: @organisations
      }, status: :ok
    end
  end
end
end

第二次我们通过 js 文件检查结果,在这里我集成了 vue

    if (Object.keys(event.detail[0].organisations)[0] != undefined){
  console.log ("results")
  console.log (" here we display the result json " + event.detail[0].organisations )
  document.querySelector('#results').classList.add("d-inline")

 var app = new Vue({
   el: '#app',
    data: {
      return{
        search_results: event.detail[0].organisations
      }
    }
  })
}else{
  console.log ("not results")
  document.querySelector('#no-result').classList.add("d-inline")
}
})

最后一个文件是我们在vue中指明结果的视图。这个视图文件是一个 .html.slim 文件。

     .container.w-100.text-center
    #app
      .all_details
        | {{ search_results }}
      ul.list-group.list-group-flush
        li.list-group-item v-for=("search_result in search_results")
          .row
            .col.mt-2
              | {{ search_result.id }}
            .col.mt-2
              | {{ search_result.name }}
            .col.mt-2
              button#ok.btn.btn-primary type="button" 

所以,当我第一次搜索一个元素时,搜索栏工作正常,这个生成了预期的 json。结果显示清晰,vue 显示了 json 和不同的元素。但是当我第二次使用搜索栏时,结果保持不变并且没有更新。 我已验证 search_results: event.detail[0].organisations 已正确更新。但是在视图 .html.slim 文件的级别上,我们没有更新首页。

我尝试强制重新渲染视图,但没有成功。 要添加信息,当我搜索不同的元素时(第一次和第二次我们在服务器和浏览器控制台中没有错误)

我想知道我的过程中是否有问题,您是否已经看到这个问题?或者您对所提出的问题有什么想法。

感谢您的帮助。

【问题讨论】:

标签: ruby-on-rails json ruby-on-rails-4 vue.js slim-lang


【解决方案1】:

您正在对每个 ajax:success 事件初始化 Vue,这仅在第一次起作用,因为 Vue 正在钩入页面,因此删除了模板及其 ID,这使得 Vue 抛出错误下一个调用说明找不到模板。

相反,在页面加载时初始化Vue,然后在ajax:success 之后使用Vue.set(object, key, value) 以更新Vue 的数据search_results 属性。

【讨论】:

    猜你喜欢
    • 2019-04-13
    • 2020-02-01
    • 2012-01-09
    • 2011-05-06
    • 2018-12-23
    • 2012-07-08
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多