ruby-on-rails-3 - 使用多态模型渲染 RABL 局部

标签 ruby-on-rails-3 rabl

我有一个数据模型,其中 User可以点个Project, Suggestion, Comment ,或其他对象。 模型设置正确,likes/show.rabl如果我们只是为了支持 Project 就可以工作 child

object @like
attributes :id, :created_at, :target_type, :target_id, :user_id
child :user => :user do
  extends "users/show"
end
child :target do
  node do |project|
    partial('projects/show', :object => project)
  end
end

但是,我希望能够使用 suggestions/show, comments/show 的部分内容也取决于 target_type .

我试过了,但没用:

child :target do |u|
  u.target.map do |r|
    if r.is_a?(Suggestion)
      partial("suggestions/show", :object => r)
    elsif r.is_a?(Project)
      partial("projects/show", :object => r)
    end
  end
end

我得到 undefined method target for <Rabl::Engine:0x69fb988> .但是,在第一种情况下我没有收到此错误。有什么想法吗?

最佳答案

您是否尝试过使用 extends 而不是 partial

也许你可以尝试这样的事情?

child :target do |u|
  u.target.map do |r|
    if r.is_a?(Suggestion)
      extends "suggestions/show"
    elsif r.is_a?(Project)
      extends "projects/show"
    end
  end
end

在这种情况下,当你使用 extends 时,你不需要传入一个 :object 因为你已经在迭代的范围内了对象 r.

关于ruby-on-rails-3 - 使用多态模型渲染 RABL 局部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11207413/

相关文章:

jquery - Rails3 中通过 AJAX 请求加载页面内容的最佳实践?

ruby-on-rails - 如何在ActiveAdmin中自定义默认登录页面?

ruby-on-rails - Rabl、Jbuilder 还是手动 json 构建 API?

Rabl,移除子元素的父元素

ruby-on-rails - Rails 4 - 无论请求的格式如何,如何呈现 JSON?

facebook - 如何使用应用程序访问 token 在 Rails 中发布 OpenGraph 操作

ruby-on-rails - 在测试中创建的模型对象会怎样?

ruby-on-rails-3 - heroku 上的 therubyracer 错误为 "Failed to install gems via Bundler."

ruby-on-rails - 为 Ember 格式化 Rabl 或将 Ember 映射到 Rabl?