2016-02-04 52 views
1

我正面臨一個奇怪的錯誤,不幸的是我不知道如何調查它。Rails:當屬性設置爲true時顯示帖子

integer =>pinoftheday設置爲true時,我在主頁上渲染某些針腳。我手動設置一些引腳爲真。

對於某些引腳,它的工作正常,它們出現在主頁上,其他一些則沒有。順便說一句,我正在檢查我的控制檯,他們被正確設置爲true。

下面是一些代碼:

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

任何想法如何,我可以檢查爲什麼有些引腳沒有渲染?我現在不寫任何測試...我知道這很愚蠢,但我沒有學會測試rails。

謝謝。

編輯:是的,在我的代碼中它是一個pin模型。我想用post來使它更​​清晰。想象它不是:) - 編輯它到正確的模型:引腳。

+0

什麼是帖子在這裏?或者它應該被釘住? <%post.pinoftheday%> (...)一些關於PIN碼的信息 <% end %> – Dheeresha

+0

在您的代碼中,@ postss應該是@ posts',btw在'post'處有拼寫錯誤,應該是'pin',對嗎? –

回答

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 

你也會做好你的pinofthedayboolean。如果您參考了1 = true; 0 = false,則Rails會在您的db中使用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 %> 
+0

是的,非常感謝您的寶貴意見。你是對的,使用示波器並從控制器撥打pinoftheday是一個更清潔的方法。關於使用布爾值,我不確定,我一直都在讀它可以減慢應用程序。 – zacchj

0

如果我理解你的代碼,然後在下面會:

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

希望能幫助你

1

嘗試下面的代碼。

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