2014-01-23 2 views
1

나는 체크 박스와 부울 값에 큰 문제가 있습니다. 확인란을 사용하여 db의 한 필드 값을 간단히 변경하고 싶습니다. 코드는 다음과 같다 :레일 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 %> 

있습니까?

편집

한 가지 중요한 사실은, 클릭 한 후 I 플래시 메시지를 '성공'을 '제출'. 왜 내가 그 변화를 보지 못했을까요? 그것은 컨트롤러 또는 다른 곳에서 문제가됩니까?

+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]) 
관련 문제