gpt4 book ai didi

ruby-on-rails - Rails 4 字符串复选框从不返回空数组

转载 作者:行者123 更新时间:2023-12-03 22:40:49 25 4
gpt4 key购买 nike

我有一个字符串数组,它是多选复选框的结果,当复选框中没有选择时,数组不会改变,结果是保存的最后一个数组!当复选框未选择任何值时,我想显示类似“”的内容。

     <%= f.label :disposizione_campionamento,"Disposizione" %>
Random <%= f.check_box :disposizione_campionamento, { :multiple => true },
"Random", nil %>
Sistematica <%= f.check_box :disposizione_campionamento,{ :multiple => true },
"Sistematica", nil %>
Stratificata <%= f.check_box :disposizione_campionamento,{ :multiple => true },
"Stratificata",nil %><br/>

并在模型中
     serialize :disposizione_campionamento, Array

如果我检查 Random,Sistematica 和 Stratificata 结果是我想要的“Random,Sistematica,Stratificata”但是如果我修改数组取消选中所有三个值,结果永远是“Random,Sistematica,Stratificata”

当我提交表单时,我在 Controller 中有这个:
          def create
modulo2 = Modulo2.find(params[:modulo2_id])
@variabili = modulo2.variabilis.create(params[:id])
respond_to do |format|
if @variabili.save
format.html { redirect_to(modulo2_variabilis_path, :notice =>
'Modifica effettuata') }
format.xml { render :xml => @variabili, :status => :created, :location =>
[@variabili.modulo2, @variabili] }
else
format.html { render :action => "new" }
format.xml { render :xml => @variabili.errors, :status =>
:unprocessable_entity }

disposizione_campionamento 是“variabili”的一个属性,它是“modulo2”的嵌套属性

最佳答案

当您不选中任何复选框并提交表单时,params 的内容缺少表示“未选中”的值。它只是避免提交 nil输入的值。

解决这个问题的一个简单方法是设置相关的值 params如果之前没有设置:

rails 4:

# your_model controller
def your_model_params # redefining the Strong Params
params[:your_model][:disposizione_campionamento] ||= []
params.permit(:whatever).require(:another)
end

rails 3:
# your_model controller
before_filter :set_disposizione_campionamento, only: [:update, :create]

def set_disposizione_campionamento
params[:your_model][:disposizione_campionamento] ||= []
end

关于ruby-on-rails - Rails 4 字符串复选框从不返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23913694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com