0

在 Rails 3.2 应用程序中,我有一个围绕 Twitter Bootstrap 的媒体对象组件构建的索引视图。我正在尝试整理它并将一些代码移动到演示者中(http://railscasts.com/episodes/287-presenters-from-scratch)。

我遇到了一个奇怪的问题,即 div 完全从渲染的标记中消失了。我的代码有错误吗?

def render_object
  content_tag(:div, class: "row") do
    div_for(object, class: "object-container") do
      content_tag(:div, class: "media") do
        link_to(object, class: "pull-left") do
          image_tag(object.image_url(:thumb), class: "media-object") if object.image?
        end
        content_tag(:div, class: "media-body") do
          link_to(object.user.name, object.user) 
        end
      end
    end
  end
end

当我加载页面时,图像及其 href 链接在标记中无处可见。奇怪的是.media-bodydiv 及其内容都存在。

如果我注释掉描述.media-bodydiv 的 3 行,则呈现链接的图像。

我不明白为什么会这样?

4

1 回答 1

0

事后看来,这个问题的答案是显而易见的,但它困扰了我很长时间,所以添加一个答案,以防它对其他人有用。

基本上 content_tag 将只返回最后一项,根据任何 ruby​​ 函数。所以秘诀就是连接链接和内容方法。

def render_object
  content_tag(:div, class: "row") do
    div_for(object, class: "object-container") do
      content_tag(:div, class: "media") do
        html = link_to(object, class: "pull-left") do
          image_tag(object.image_url(:thumb), class: "media-object") if object.image?
        end
        html += content_tag(:div, class: "media-body") do
          link_to(object.user.name, object.user) 
        end
      end
    end
  end
end

注意html =

于 2013-05-28T16:50:55.463 回答