ruby-on-rails - Rails 渲染助手不渲染

标签 ruby-on-rails rendering partial-views

我用于渲染部分的辅助函数之一未正确渲染。

    def render_contact_list
      @contact_groups = ContactGroup.find(:all, :conditions => ["user_id = ?", current_user.id])

      @contact_groups.each do |contact_group|
        @contacts = Contact.find(:all, :conditions => ["group_id = ? and Owner_id = ?", contact_group.id, current_user.id])
        render :text => "#{contact_group.name}<br />"
        render(:partial => 'contacts/partials/view_contacts', :collection => @contacts, :as => :contact)
      end
  end

页面上显示的全部是

##

当查看渲染页面的 HTML 时,它看起来像这样:

#<ContactGroup:0x103090c78>#<ContactGroup:0x103090b60>

我把block函数完全注释掉了,它仍然显示上面的内容。

我做错了什么?

编辑:我刚刚意识到 ## 来自 @contact_groups,它是页面上分配的最后一个值。它返回值并且不渲染 block 内的任何代码。

最佳答案

您的辅助函数正在返回列表@contact_groups。您需要返回部分内容。你可以这样做(粗略的例子):

def render_contact_list
  @contact_groups = ContactGroup.find(:all, :conditions => ["user_id = ?", current_user.id])

  text = ""
  @contact_groups.each do |contact_group|
    @contacts = Contact.find(:all, :conditions => ["group_id = ? and Owner_id = ?", contact_group.id, current_user.id])
      text << render :text => "#{contact_group.name}<br />"
      text << render(:partial => 'contacts/partials/view_contacts', :collection => @contacts, :as => :contact)
    end
    text
  end

在这里,我们用所有部分渲染的片段构建一个字符串,然后返回该字符串(最后提到它)。无论有没有区 block ,它都可以工作,这一事实纯属巧合。函数的第一行和 block 的计算结果是相同的。

关于ruby-on-rails - Rails 渲染助手不渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3323944/

相关文章:

ruby-on-rails - "bundler: command not found: thin"heroku 部署 rails

java - 使用 ajax primefaces 渲染 panelgrid

javascript - MVC - Html.Action 使用 Javascript 检索元素,然后将其作为参数传递给 Controller,然后返回 PartialView

javascript - 为什么会抛出这个 JS 错误?

html - Internet Explorer ol 数字出现在 li 的底部而不是预期的顶部

c# - 使用 JQuery 重新加载部分 View

ruby-on-rails - 如何创建仅包含部分的 4x4 网格?

ruby-on-rails - Activeadmin - 文本区域中的 HTML

css - 试图对齐 simple_form 框和按钮

ruby-on-rails - 思维狮身人面像掠夺可以一起工作吗?