Ruby on rails 如何输出rabl中的方法值?
我试图在我的项目模型上输出方法的值(当前用户在应用程序\u控制器中定义)。我目前有以下作为我的rabl模板:Ruby on rails 如何输出rabl中的方法值?,ruby-on-rails,ruby-on-rails-3.2,rabl,Ruby On Rails,Ruby On Rails 3.2,Rabl,我试图在我的项目模型上输出方法的值(当前用户在应用程序\u控制器中定义)。我目前有以下作为我的rabl模板: object @item attributes :id, :name code :is_liked do |this_item| if current_user this_item.is_liked current_user else false end end 在我的模型中: class Item < ActiveRecord::Base ..
object @item
attributes :id, :name
code :is_liked do |this_item|
if current_user
this_item.is_liked current_user
else
false
end
end
在我的模型中:
class Item < ActiveRecord::Base
...
def is_liked user
if user
if user.liked_item_ids.include?(self.id)
return true
else
return false
end
end
end
....
end
尝试:
你已经有了这个方法,你可以简单地在这里调用一个节点,而不是重新创建逻辑。
你的Rabl似乎很好,但是,当你发现自己在你的视图中添加了一些逻辑(Rabl可以被比作一个视图)时,你可能需要考虑重构一个演示者的逻辑。 有关rabl演示者的详细信息
关于您的错误,如@apheading刚才所说,您的代码库中某处存在递归问题。出于好奇,您是否尝试将code
块重命名为方法名称以外的其他名称?根据您使用的rabl版本,这可能是问题所在
最后,你应该考虑重构你的代码> ISSY喜欢方法:
def is_liked user
return user.liked_item_ids.include?(id) if user
false
end
thx,我试过了,但更新的问题出现了错误。我不确定当前用户是否可以在我的rabl模板中访问,我现在正在测试。当前用户应该可用。刚刚注意到您应该从
属性列表中删除:是否喜欢,并检查您的是否喜欢方法以获取评论;是的,我在属性中尝试了with和with is_like,但我同意你的评论;将更新问题。我将考虑将当前用户移动到helper类,而不是将其作为应用程序控制器中的helper方法。你有一个递归问题,我怀疑它源于我能看到的代码我同意-我认为这与当前用户有关;在我们所有的视图中都使用它,所以奇怪的是,它只在rabl中爆炸。嗯,对我来说,现在是凌晨1点了——也许现在没有做最好的思考。对于主持人来说,我把这个FLG移到主动模型序列化器上,它很好,让我觉得这是一个Rabl发行,欢迎你,如果你认为它对你有帮助,请考虑接受这个答案。
node(:is_liked) {|this_item| this_item.is_liked(current_user) }
def is_liked user
return user.liked_item_ids.include?(id) if user
false
end