Html mojolicous中的复选框

Html mojolicous中的复选框,html,perl,mojolicious,Html,Perl,Mojolicious,我有一个Mojolicious中的模板,用作SQL数据库的前端。要切换布尔值(yes=1/no=0),我使用了复选框的输入类型 这是模板中的代码: <input type="checkbox" name="reinigung_ja" id="reinigung_ja" value="1" <%= $rs->reinigung_ja ? 'checked' : ''; %> > Reinigung <br> 我想知道是否

我有一个Mojolicious中的模板,用作SQL数据库的前端。要切换布尔值(yes=1/no=0),我使用了复选框的输入类型

这是模板中的代码:

    <input type="checkbox" name="reinigung_ja" id="reinigung_ja" value="1" 
        <%= $rs->reinigung_ja ? 'checked' : ''; %>
    > Reinigung <br>

我想知道是否有更好的解决方案?

您可以初始化默认值,然后进行更新,如下所示:

# Initialize defaults
my $fields = {
    'reinigung_ja' => 0,
};

for ( $c->req->body_params->param ) {
    $fields->{$_} = $c->req->body_params->param($_);
}

$rs->update($fields);

这稍微少了一些代码,但我不确定哪种模式更好。如果您明确地查找不存在的代码,那么代码是相当可读的。

感谢@zerodiffs comment,我找到了以下解决方案

<input type="checkbox" name="reinigung_ja" id="reinigung_ja" value="1" 
  <%= $rs->reinigung_ja ? 'checked' : ''; %>
> 
<input type="hidden" name="reinigung_ja"  value="0" > 

> 

虽然有点有线,但它比我的解决方法要好得多,因为它将控制器从字段初始化中释放出来。模板中现在有任何内容。

谢谢zerodiff,您的提案绝对是一个进步,因为它更具可读性。不幸的是,它不能解决在两个不同的文件中包含有关该复选框的信息的问题。因此,每次我在模板中添加复选框时,我都必须更新控制器。您是否考虑过在表单中添加带有复选框元信息的隐藏字段?这可能是用于初始化的JSON或其他常规格式的信息。听起来很有希望@zerodiff-谢谢!刚找到
<input type="checkbox" name="reinigung_ja" id="reinigung_ja" value="1" 
  <%= $rs->reinigung_ja ? 'checked' : ''; %>
> 
<input type="hidden" name="reinigung_ja"  value="0" >