2013-07-12 2 views
0

У меня есть модель, в которой у меня есть логический атрибут, published. В моем контроллере Post я добавил его к моим разрешенным атрибутам. Как это:Rails 4 boolean checkbox not working

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 # update как HTML Параметры: {[...]," published "=>" 1 "}," commit "=>" Uppdatera inlä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