当 id 传递到控制器中的新操作时,我尝试为两个文本字段输入设置一个值。当前的代码可以工作,但我想知道是否可以缩短代码。
当前代码
View
<div class="custom-input">
<% if @debtor %>
<input type="text" name="debtor_name" class="form-control" id="debtor-search-form" value='<%= @debtor.name %>'>
<% else %>
<input type="text" name="debtor_name" class="form-control" id="debtor-search-form">
<% end %>
</div>
<% if @debtor %>
<%= f.text_field :debtor_id, class: "form-control", value: @debtor.id %>
<% else %>
<%= f.text_field :debtor_id, class: "form-control" %>
<% end %>
我尝试删除 if-else 部分以使代码更短
更短的代码
View
<div class="custom-input">
<input type="text" name="debtor_name" class="form-control" id="debtor-search-form" value='<%= @debtor.name if @debtor %>'>
</div>
<%= f.text_field :debtor_id, class: "form-control", value: @debtor.id if @debtor %>
当没有债务人被传递时,缩短的代码导致第一个输入具有“悬挂”值标签(即它只显示值。后面没有等号)
<input type="text" name="debtor_name" class="form-control ui-autocomplete-input" id="debtor-search-form" value autocomplete="off">
而第二个输入消失。
“悬挂”价值标签可以吗?我检查了 html,如果我单击“编辑为 html”,“悬挂”值标签将解析为 value=""
有没有办法缩短代码,或者我应该坚持使用它?
拥有一个 HTML 属性value
很好,在 HTML5 中。另外,rawHTML 源代码可能如下所示value=''
,根据你的判断html.erb
code.
我猜您正在使用 Chrome 或 Firefox 开发者工具,它会尝试correct并为您格式化看起来很奇怪的 HTML,并且可能会显示它而没有空=''
.
那么,这个的问题是:
<%= f.text_field :debtor_id, class: "form-control", value: @debtor.id if @debtor %>
是运算符优先级。你的if
适用于整个声明。
尝试使用:
<%= f.text_field :debtor_id, class: "form-control", value: (@debtor.id if @debtor) %>
Or:
<%= f.text_field :debtor_id, class: "form-control", value: @debtor.try!(:id) %>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)