2014-01-23 6 views
1

У меня большая проблема с флажками и логическими значениями. Я хочу просто изменить значение одного поля в db, используя флажок. Код выглядит так:Rails 4 checkbox не работает, никаких изменений в db

Collection_controller:

def update 
@collection = Collection.find(params[:id]).album 
if @collection.update_attributes(:for_sale) 
    flash[:success] = "success" 
    redirect_to current_user 
else 
    flash[:success] = "not working" 
end 
end 

def collection_params 
    params.require(:collection).permit(:to_buy, :for_sale) 
end 

и форма:

<%= form_for collection do |f| %> 
<div><%= f.check_box :for_sale%></div> 
<%= f.submit "sale", class: "btn btn-primary" %> 
<% end %> 

Есть ли кто-нибудь, кто знает, почему он не работает?

EDIT

Один важный факт, после нажатия «Отправить» У меня есть флэш-сообщение «успеха». Так почему я не вижу изменений? Это проблема в контроллере или где-то еще?

+0

Попробуйте 'form_for @ collection'. Форма – Gene

+0

отображается для @collection, поэтому здесь должна быть коллекция. В любом случае, я проверил ваше решение и не работал – tommybernaciak

+0

Пожалуйста, смотрите примеры на странице http: // apidock.com/rails/ActionView/Helpers/FormHelper/form_for'. Символ будет работать, и переменная instance ('@') будет работать, но я не думаю, что голова переменная будет работать. – Gene

ответ

0

Вам необходимо пройти в то, что вы хотите обновить. Возможно, например, так:

if @collection.update_attributes(collection_params) 

Но, похоже, что вы неправильно настройки вашей переменной коллекция будет альбом коллекции, так что исправить это слишком

@collection = Collection.find(params[:id]).album 

должен быть

@collection = Collection.find(params[:id]) 
Смежные вопросы