Ruby on rails Rails 4复选框不工作,数据库中没有更改

Ruby on rails Rails 4复选框不工作,数据库中没有更改,ruby-on-rails,checkbox,ruby-on-rails-4,Ruby On Rails,Checkbox,Ruby On Rails 4,我对复选框和布尔值有一个很大的问题。我只想使用复选框更改db中一个字段的值。代码如下: 收集控制器: 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"

我对复选框和布尔值有一个很大的问题。我只想使用复选框更改db中一个字段的值。代码如下:

收集控制器:

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 %>
有人知道它为什么不起作用吗

编辑


一个重要的事实是,点击“提交”后,我会收到一条“成功”的快闪消息。那么为什么我看不到这些变化呢?这是控制器或其他地方的问题?

首先,这应该是参数散列


您需要传入您想要更新的内容。可能是这样:

if @collection.update_attributes(collection_params)
但是,看起来您没有正确地将集合变量设置为集合的相册,所以也要解决这个问题

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

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

试试@collection的form_。form是为@collection呈现的,所以这里应该是collection。无论如何,我检查了你的解决方案,但不起作用。请参见http://apidock.com/rails/ActionView/Helpers/FormHelper/form_for. 一个符号可以工作,一个实例@variable可以工作,但我认为一个简单的变量不起作用。