我有一个数据模型,其中 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/