Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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 如果某物列出了具有限制的某物,则在rails中列出所有内容_Ruby On Rails - Fatal编程技术网

Ruby on rails 如果某物列出了具有限制的某物,则在rails中列出所有内容

Ruby on rails 如果某物列出了具有限制的某物,则在rails中列出所有内容,ruby-on-rails,Ruby On Rails,我正在试图弄清楚如何根据用户计划只显示一定数量的类别。因此,在我的控制器中,我有以下内容: def check_plan? User.current.plan_id == "" && User.current.bins.count == 2 || User.current.plan_id == "nil" && User.current.bins.count == 2 end helper_method :check_plan? 注:我知道,不漂亮,

我正在试图弄清楚如何根据用户计划只显示一定数量的类别。因此,在我的控制器中,我有以下内容:

def check_plan?
  User.current.plan_id == "" && User.current.bins.count == 2 || User.current.plan_id ==     "nil" && User.current.bins.count == 2
end
helper_method :check_plan?
注:我知道,不漂亮,但现在就可以了。所以基本上:检查计划?检查一些东西

现在我想,我可以把它作为我们的分类列表的起点,这样,如果用户不在任何计划中,他们只能显示2,如果他们在计划中,它会显示所有人。这是我认为有效的方法,但它不起作用。我以前做过,但记不清是怎么回事,所以非常感谢您的帮助

<% if check_plan? %>
   <% @bin_list.order("position").limit(2).each do |bin| %>
<% else %>
   <% @bins_list.order("position").each do |bin| %>
<% end %>


我知道这是为什么,但他们会在我所有其他的尝试中,将这些行与check_plan结合在一起。

首先,rails方法
。blank?
将为“”或nil返回true,因此您可以按如下方式重构代码:

def check_plan?
  ( User.current.plan_id.nil? || User.current.plan_id.blank? ) && User.current.bins.count == 2 
end
helper_method :check_plan?
其次,您在下面的代码中调用块,因此需要使用
end

<% if check_plan? %>
   <% @bin_list.order("position").limit(2).each do |bin| %>
   <% end %>
<% else %>
   <% @bins_list.order("position").each do |bin| %>
   <% end %>
<% end %>


当然,您需要将使用
bin
执行的任何操作放在上面的
do
end
部分之间。

首先,rails方法
。blank?
将返回true表示“”或nil,因此您可以按如下方式重构代码:

def check_plan?
  ( User.current.plan_id.nil? || User.current.plan_id.blank? ) && User.current.bins.count == 2 
end
helper_method :check_plan?
其次,您在下面的代码中调用块,因此需要使用
end

<% if check_plan? %>
   <% @bin_list.order("position").limit(2).each do |bin| %>
   <% end %>
<% else %>
   <% @bins_list.order("position").each do |bin| %>
   <% end %>
<% end %>


当然,您需要将使用
bin
执行的任何操作放在上面的
do
end
部分之间。

首先,rails方法
。blank?
将返回true表示“”或nil,因此您可以按如下方式重构代码:

def check_plan?
  ( User.current.plan_id.nil? || User.current.plan_id.blank? ) && User.current.bins.count == 2 
end
helper_method :check_plan?
其次,您在下面的代码中调用块,因此需要使用
end

<% if check_plan? %>
   <% @bin_list.order("position").limit(2).each do |bin| %>
   <% end %>
<% else %>
   <% @bins_list.order("position").each do |bin| %>
   <% end %>
<% end %>


当然,您需要将使用
bin
执行的任何操作放在上面的
do
end
部分之间。

首先,rails方法
。blank?
将返回true表示“”或nil,因此您可以按如下方式重构代码:

def check_plan?
  ( User.current.plan_id.nil? || User.current.plan_id.blank? ) && User.current.bins.count == 2 
end
helper_method :check_plan?
其次,您在下面的代码中调用块,因此需要使用
end

<% if check_plan? %>
   <% @bin_list.order("position").limit(2).each do |bin| %>
   <% end %>
<% else %>
   <% @bins_list.order("position").each do |bin| %>
   <% end %>
<% end %>


当然,您需要将您正在使用的
bin
放在上面的
do
end
部分之间。

这种逻辑在本质上属于模型。不要虐待助手

class User < ActiveRecord::Base
  def bin_limit
    check_plan? ? 0 : 2
  end

  def check_plan?
    # Your logic
  end

  def bins_with_limit
    bins.with_limit(bin_limit)
  end

end 

class Bin < ActiveRecord::Base
  def self.with_limit(limit)
    return self if limit <=0
    self.limit(limit)
  end
end

这种逻辑在本质上属于模型。不要虐待助手

class User < ActiveRecord::Base
  def bin_limit
    check_plan? ? 0 : 2
  end

  def check_plan?
    # Your logic
  end

  def bins_with_limit
    bins.with_limit(bin_limit)
  end

end 

class Bin < ActiveRecord::Base
  def self.with_limit(limit)
    return self if limit <=0
    self.limit(limit)
  end
end

这种逻辑在本质上属于模型。不要虐待助手

class User < ActiveRecord::Base
  def bin_limit
    check_plan? ? 0 : 2
  end

  def check_plan?
    # Your logic
  end

  def bins_with_limit
    bins.with_limit(bin_limit)
  end

end 

class Bin < ActiveRecord::Base
  def self.with_limit(limit)
    return self if limit <=0
    self.limit(limit)
  end
end

这种逻辑在本质上属于模型。不要虐待助手

class User < ActiveRecord::Base
  def bin_limit
    check_plan? ? 0 : 2
  end

  def check_plan?
    # Your logic
  end

  def bins_with_limit
    bins.with_limit(bin_limit)
  end

end 

class Bin < ActiveRecord::Base
  def self.with_limit(limit)
    return self if limit <=0
    self.limit(limit)
  end
end


您是否测试了检查计划中的每个值?确保他们返回您期望的内容的方法:检查计划是否正常。。我也试过做
如果检查计划@bin|u list.order(“position”).limit(2)。每个do | bin |
然后是内容
end else@bin|u list.order(“position”)。每个do | bin |
但是它告诉我
意外关键字| else
您测试过支票计划中的每个值吗?确保他们返回您期望的内容的方法:检查计划是否正常。。我也试过做
如果检查计划@bin|u list.order(“position”).limit(2)。每个do | bin |
然后是内容
end else@bin|u list.order(“position”)。每个do | bin |
但是它告诉我
意外关键字| else
您测试过支票计划中的每个值吗?确保他们返回您期望的内容的方法:检查计划是否正常。。我也试过做
如果检查计划@bin|u list.order(“position”).limit(2)。每个do | bin |
然后是内容
end else@bin|u list.order(“position”)。每个do | bin |
但是它告诉我
意外关键字| else
您测试过支票计划中的每个值吗?确保他们返回您期望的内容的方法:检查计划是否正常。。我也试过做
如果检查计划@bin|u list.order(“position”).limit(2)。每个do | bin |
然后是内容然后
end else@bin|u list.order(“position”)。每个do | bin |
但是它告诉我
意外关键字| else
谢谢提醒,你说得对。关于。空白?是的,它的工作原理是一样的,我真的忘了。空白?而且处理的时候没有工作,空的?这就是为什么我在这一行中添加了一些其他选项。再次感谢
String#blank?
不捕捉OP的原始代码中匹配的
“nil”
。然而,这首先看起来很奇怪……其次,是的
User.current.plan\u id.blank?
User.current.bins.count确实返回了我们期望的值。我只是觉得我最初的问题行有太多的东西。霍尔格可能很奇怪,但在我能推出更好的东西之前,这是一个快速解决方案,只是和我的老板在时间线上安排得很紧:)我想
String#blank?
会抓住
nil
,但如果不是的话,您也可以轻松地在其中添加对
User.current.plan\u id.nil?
的测试。也就是说,我还要看看@billy chan关于在你的模型中加入逻辑的回答。谢谢你的提醒,你是对的。关于。空白?是的,它的工作原理是一样的,我真的忘了。空白?而且处理的时候没有工作,空的?这就是为什么我在这一行中添加了一些其他选项。再次感谢
String#blank?
不捕捉OP的原始代码中匹配的
“nil”
。然而,这首先看起来很奇怪……其次,是的
User.current.plan\u id.blank?
User.current.bins.count确实返回了我们期望的值。我只是觉得我原来的问题太多了。霍尔格虽然可能很奇怪,但在我能推动之前,这是一个快速解决方案