是否可以在Rails 5视图中使用ajax请求呈现部分?

时间:2018-02-07 21:03:25

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

我有一些信息和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(只是像遥控器:真的)

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

提前致谢。

1 个答案:

答案 0 :(得分:2)

好吧,我找到了一个非理想的解决方案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()
  })