Rails:当属性设置为true时显示帖子

时间:2016-02-04 08:53:36

标签: ruby-on-rails integer rendering

我正面临着一个奇怪的错误,不幸的是我不知道如何调查它。

integer =>时,我在主页上呈现了某些引脚pinoftheday设置为true。我手动将一些引脚设置为true。

对于某些引脚而言,它运行良好并且它们出现在主页上,其他一些则没有。顺便说一下,我正在检查我的控制台,它们被正确设置为真。

以下是一些代码:

  <% @pins.each do |pin| %>
    <% if pin.pinoftheday %>
          (...) some informations about the pin 
    <% end %>
  <% end %>

我有什么想法可以检查为什么有些引脚没有渲染?我现在没有写任何测试...我知道这是愚蠢的,但我还没有学会测试轨道。

谢谢。

编辑:是的,在我的代码中它是一个引脚模型。我想用post来让它更清晰。想象它不是:) - 编辑它到正确的模型:pin。

3 个答案:

答案 0 :(得分:1)

尝试以下代码。

 <% @postss.each do |post| %>
    <% if post.pinoftheday %>
          (...) some informations about the pin 
    <% end %>
  <% end %>

答案 1 :(得分:0)

如果我理解你的代码,那么将在下面:

<% @postss.each do |pin| %>
  <% if pin.pinoftheday.nil? %>
      (...) some informations about the pin 
   <% else %>
      (...) some informations about the pin 
  <% end %>
<% end %>

希望能帮到你

答案 2 :(得分:0)

您的问题是,您已在块中定义了local variable,并且正在引用另一个:

<% @postss.each do |post| %>
  <% if post.pinoftheday %>
      ...
  <% end %>
<% end %>

-

您最好使用scope

#app/models/post.rb
class Post < ActiveRecord::Base
   scope :pin_of_the_day, -> { where pinoftheday: true }
end

您也可以制作pinoftheday专栏boolean。如果您引用1 = true; 0 = false,Rails会在您的数据库中使用tinyint处理它,并将true/false作为布尔逻辑调用。您可以调用true

来代替将整数作为数字引用

以上将允许您致电:

#app/controllers/your_controller.rb
class YourController < ApplicationController
   def index
     @postss = Post.pin_of_the_day
   end
end

这将删除低效的条件逻辑(<% if ...):

<% @postss.each do |post| %>
   ...
<% end %>