我正在开发一个基于spree构建的项目,并且在选择送货地址时尝试将州名缩写连接到下拉列表中的州名。
示例:"纽约 - 纽约"而不是"纽约"
可以找到送货地址表单here,下面是状态选择下拉列表:
<% if Spree::Config[:address_requires_state] %>
<p class="form-group" id=<%="#{address_id}state" %>>
<% have_states = !address.country.states.empty? %>
<%= form.label :state do %>
<%= Spree.t(:state) %><abbr class='required' title="required" id=<%="#{address_id}state-required"%>>*</abbr>
<% end %>
<%== state_elements = [
form.collection_select(:state_id, address.country.states,
:id, :name,
{include_blank: true},
{class: have_states ? 'form-control required' : 'form-control hidden',
disabled: !have_states}) +
form.text_field(:state_name,
class: !have_states ? 'form-control required' : 'form-control hidden',
disabled: have_states)
].join.gsub('"', "'").gsub("\n", "")
%>
</p>
<noscript>
<%= form.text_field :state_name, class: 'form-control required' %>
</noscript>
在查看this帖后,我认为:name
是调用每个选项生成文本的方法,但当我将其更改为:abbr
时(应该是它拥有的财产)一切都保持完全相同。我很确定我的更改正在运行,因为当我进行其他更改时,它可以正常运行。你如何更改选项文本并管理它,如何获得名称和缩写,并用连字符连接它们。
正如注释:我正在使用Deface::Override对代码进行更改。