我的复选框和布尔值存在很大问题。我想简单地使用复选框更改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 :(得分:0)
首先,这应该是参数的哈希值。
http://apidock.com/rails/ActiveRecord/Base/update_attributes
答案 1 :(得分:0)
您需要传递要更新的内容。可能是这样的:
if @collection.update_attributes(collection_params)
但看起来你错误地将你的集合变量设置为集合的专辑,所以也要修复它
@collection = Collection.find(params[:id]).album
应该是
@collection = Collection.find(params[:id])