Rails 4中的DIV / SPAN是否可以远程使用?

时间:2016-03-16 13:57:10

标签: ruby-on-rails ajax

例如,要使用以下内容:

#index.haml

%article-content{  :remote => true, :id => "article-#{article.id}", :class => "article-content", "data-article-id" => article.id }


#show.js.erb

var article = "#article-<%= params[:article_id] %>";
$('article').html('<%= j render ("article") %>').show();

到目前为止,这似乎不起作用。

编辑:

感谢@MrYoshiji,我似乎更接近实现这个目标。但是,我仍然可以在浏览器中看到一些原始JS,并且图像不会从视图中加载。并且,即使下面的jquery选择器中没有元素,也会出现文章 do ,所以我有点困惑,并试图找出它。

#articles/show.js.erb
$().html('<%= j render ("article") %>');


#articles_controller.rb
def show
    respond_to do |format|
        format.js {  }
    end
end

2 个答案:

答案 0 :(得分:1)

有一天我看到了非常好的解决方案,但我找不到它。我将尝试向您展示此解决方案的基础知识:

# articles/index.haml
.ajax_load.article-content{ data: { 'remote-url' => article_path(article) } }
  = 'This content will be available soon'

# layouts/application.haml
:javascript
  $(document).ready(function() {
    $('.ajax_load').each(function(index, element) {
      var url_to_go = $(element).data('remote-url')
      if (url_to_go) {
        $.get(url_to_go, function(responseText) {
          $(element).html(responseText);
        })
      } else {
        console.log('missing url for ajax-load!')
      }
    })
  })

此javascript将检测具有类.ajax_load的每个HTML元素,循环遍历每个元素,并对其“data-remote-url”属性(如果存在)进行AJAX调用,并将AJAX调用的结果加载到HTML元素本身。使用此解决方案,您可以使用组合HTML类ajax_load + data-remote-url在页面中加载AJAX中的任何内容。

答案 1 :(得分:-1)

不,不是。 :remoteform_forlink_tobutton_to等帮助程序一起使用。查看Guide。你不能坚持:remote任何旧地方并期望它做某事。