【问题标题】:Is it possible to render partial with ajax request in Rails 5 view?是否可以在 Rails 5 视图中使用 ajax 请求进行部分渲染?
【发布时间】:2018-02-07 21:03:24
【问题描述】:

我有一个包含一些信息的视图和一个render partial: 'path/to/partial'

我想做render url: another_model_path(@model), remote: true之类的事情。

我可以通过 link_to 'Load what I want', another_model_path(@model), remote: true 部分完成我想要的事情

但是,我需要单击按钮来加载我想要的内容。无论如何都可以在不单击任何按钮的情况下执行此操作,最好不要使用自定义 javascript(就像 remote: true 一样)

我看到可以将 data-remote=true 添加到任何元素,Rails 将负责发出 ajax 请求(只要您还提供 data-url='your_url')。我试过这个,但没有奏效。我在 check_box_tag 中尝试过,它可以工作,但是我需要再次单击复选框)=

提前致谢。

【问题讨论】:

  • 说没有点击,只要做<%= render 'PATH' %>,它就会为你加载那个页面。不,如果你想动态渲染部分,必须触发事件或动作......
  • 在我的情况下不会这样做。我需要触发控制器,而不仅仅是渲染 html。感谢您的回答。

标签: ruby-on-rails ruby ajax ruby-on-rails-5


【解决方案1】:

好吧,我找到了一个不理想的解决方案here。基本上只需使用 js 向我想要的控制器发出请求:

在视图中:

.some-class{ data: { remote="true", url: my_path(@model), method: :get } }
  .loading= fa_icon "spinner pulse", class: "fa-5x"

在 .js 中:

$ ->
  elem = $("div").find("[data-remote]")
  path = elem.data("url")
  method = elem.data("method") || "GET"
  defaultContent = elem.contents()

  elem.bind 'ajax:beforeSend', ->
    $(this).prepend(defaultContent)
    $(this).contents().css("opacity", "0.5")

  $.ajax({
    url: path,
    dataType: 'script',
    type: method,
    complete: ->
      defaultContent.remove()
  })

【讨论】:

    猜你喜欢
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 2022-08-19
    相关资源
    最近更新 更多