Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何输出rabl中的方法值?_Ruby On Rails_Ruby On Rails 3.2_Rabl - Fatal编程技术网

Ruby on rails 如何输出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 ..

我试图在我的项目模型上输出方法的值(当前用户在应用程序\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
  ...
  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