2013-07-12 65 views
0

我有一個模型,其中有一個布爾屬性published。在我的Post控制器中,我將它添加到了我允許的屬性中。就像這樣:Rails 4布爾複選框不起作用

params.require(:post).permit([...], :published) 

我的索引行動應該列出所有發佈的帖子是這樣的:

def index 
    if session[:user_id] 
     @posts = Post.paginate(:page => params[:page]) 
    else 
     @posts = Post.where("published = 1").paginate(:page => params[:page]) 
    end 
end 

而且最後我的形式如下:

= form_for @post, :html => { :multipart => true } do |f| 
    [...] 
    .field 
    = f.label :published, "Publicera:" 
    = f.check_box :published  
    .actions 
    = f.submit 

目前沒有職位是聽在我的索引頁上,即使我新的或更新視圖檢查複選框。我不知道如何解決它,有什麼想法?

+0

你是否檢查查詢生成正確? 'log/development.log'會告訴你執行的SQL,並且你可以總是獨立地對你的數據庫進行測試,以驗證它是否正常工作。 – tadman

+0

@tadman我的更新操作日誌顯示:'通過PostsController處理#更新爲HTML 參數:{[...],「published」=>「1」},「commit」=>「Uppdaterainlägg」, 「id」=>「3」} 重定向到http:// localhost:3000/posts/3 已完成302在13ms(ActiveRecord:1.9ms)中找到'。 303,是一個問題,對不對?這裏雖然沒有多少線索,但... – Anders

+0

你應該在那裏有一些查詢,而不僅僅是參數。 – tadman

回答

1

這個問題似乎與我的謂詞有關。這工作:

@posts = Post.where(:published => true).paginate(:page => params[:page]) 
+1

'「published = 1」'是一個MySQL的東西,所以如果你正在使用另一個可能無法運行的數據庫。在所有支持布爾或布爾模擬的平臺上,':published => true'應該是等價的。 – tadman