2014-01-23 54 views
1

我有一個複選框和布爾值的大問題。我想使用複選框簡單地更改數據庫中一個字段的值。代碼是這樣的:Rails 4複選框不起作用,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 %> 

是否有任何人誰知道爲什麼它不工作?

編輯

一個重要的事實,之後點擊「提交」我有閃光消息「成功」。那麼爲什麼我沒有看到變化?這是控制器或其他地方的問題嗎?

+0

嘗試'form_for @ collection'。 – Gene

+0

表單是爲@collection呈現的,所以這裏應該是集合。無論如何,我檢查了你的解決方案,並不能正常工作 – tommybernaciak

+0

請參閱'http:// apidock.com/rails/ActionView/Helpers/FormHelper/form_for'上的例子。符號將起作用,並且一個實例('@')變量將起作用,但我不認爲一個裸露的變量會起作用。 – Gene

回答

0

您需要在您要更新什麼來傳遞。也許像這樣:

if @collection.update_attributes(collection_params) 

但它看起來像你正確設置你的集合變量是收藏的專輯,所以修復過

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

應該

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