oss*_*sse 3 ruby-on-rails erb ruby-on-rails-4
当id传递给控制器中的新操作时,我正在尝试将值设置为两个文本字段输入.当前代码有效,但我想知道代码是否可以缩短.
目前的代码
视图
<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 %>
Run Code Online (Sandbox Code Playgroud)
我尝试删除if-else部分以缩短代码
更短的代码
视图
<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 %>
Run Code Online (Sandbox Code Playgroud)
当没有债务人通过时,缩短的代码会导致第一个输入具有"挂起"值标记(即它只显示值.后面没有等号)
<input type="text" name="debtor_name" class="form-control ui-autocomplete-input" id="debtor-search-form" value autocomplete="off">
Run Code Online (Sandbox Code Playgroud)
而第二个输入消失了.
是一个"挂"值标签好吗?我查看了html,如果点击'edit as html',"悬挂"值标签会解析为value =""
有没有办法缩短代码或者我应该坚持下去?
value在HTML5中使用HTML属性就可以了.此外,原始 HTML源代码可能读作value='',从您的html.erb代码判断.
我猜您正在使用Chrome或Firefox的开发人员工具,它们会尝试为您修正和格式化奇怪的HTML,并且可能会在没有空的情况下显示它=''.
然后,这个问题:
<%= f.text_field :debtor_id, class: "form-control", value: @debtor.id if @debtor %>
Run Code Online (Sandbox Code Playgroud)
是运算符优先级.您if适用于整个声明.
试试:
<%= f.text_field :debtor_id, class: "form-control", value: (@debtor.id if @debtor) %>
Run Code Online (Sandbox Code Playgroud)
要么:
<%= f.text_field :debtor_id, class: "form-control", value: @debtor.try!(:id) %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4748 次 |
| 最近记录: |