在我的简单表单中,我想引用一个集合,并具有以下行为:
到目前为止,我的代码是这个(也使用simple_enum)
<script src="https://code.angularjs.org/1.3.14/angular.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.js"></script>
<script src="https://rawgit.com/angular-ui/angular-google-maps/2.0.X/dist/angular-google-maps.js"></script>
<div ng-app="appMaps" ng-controller="mainCtrl">
<ui-gmap-google-map
center='map.center'
zoom='map.zoom'
aria-label="Google map">
<ui-gmap-marker ng-repeat="marker in markers"
coords="marker.coords"
options="marker.options"
events="map.events" idkey="marker.id">
</ui-gmap-marker>
<ui-gmap-window show="map.window.show" coords="map.window.coords" >
<div>
<img class="img-responsive img-circle" ng-src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Mercedes-Benz_Zetros_2008.jpg/1280px-Mercedes-Benz_Zetros_2008.jpg" />
Shop Name : {{map.window.title}} -
Employees # : <a ui-sref="employees({ sectorid: {{ map.window.Pksectorid }} })">{{ map.window.Employeecount }}</a>
</div>
</ui-gmap-window>
</ui-gmap-google-map>
</div>
如何设置不会覆盖保存值的默认值?
答案 0 :(得分:2)
如果current_user.fluent_language
尚未保存,您可以尝试设置<% current_user.fluent_language ||= "you_default_value" %>
<%= f.input :back_language,
collection: enum_option_pairs(Flashcard, :back_language),
label: false,
selected: current_user.fluent_language %>
的值:
fluent_language
编辑:
我不确定你的back_language
和<% current_user.back_language ||= "you_default_value" %>
<%= f.input :back_language,
collection: enum_option_pairs(Flashcard, :back_language),
label: false %>
的实现是什么样的,但根据评论,可能更好的解决方案就是这样:
{listDepth > 0}?
答案 1 :(得分:2)
编辑:
结果改革有一个简单的方法来实现这一点。 :)
在表单对象中调用property
时,只需传入default
选项。
property :back_language, default: model.fluent_language
瞧!
原始答案:
将simple_form
与reform
一起使用时,表单对象会在您调用property
时定义getter和setter。这些方法被委托给model
,但如果您需要以不同方式填充表单或在保存之前操作表单数据,则可以覆盖它们。
在您的情况下,您可能希望覆盖back_language
。
在您的模板中,您将拥有:
<%= f.input :back_language,
collection: enum_option_pairs(Flashcard, :back_language),
label: false %>
表单对象将具有:
model :user
property :back_language
def back_language
# takes care of both new and edit actions
super || model.fluent_language
end
<强>替代地强>
如果您不想处理表单对象,可以执行以下操作:
<%= f.input :back_language,
collection: enum_option_pairs(Flashcard, :back_language),
label: false,
selected: (@form.back_language || current_user.fluent_language) %>
但我不建议在模板中保留逻辑。