我的Rails应用程序中有以下选择框:
<div id="vue-element">
<strong><%= f.label :property_type %></strong><br>
<%= f.select(:property_type, options_for_select(@types.map {|type| [type.titleize, type]}, listing.property_type), {'v-model': 'propertyType'}) %>
</div>
但是当我尝试在同一页面上显示propertyType的内容时,Vue不会呈现所选的条目:
{{ propertyType }}
这就是我实例化vue的方式。
new Vue({
el: '#vue-element',
data: {
propertyType: undefined
}
})
知道为什么会这样或者我如何调试这个? 提前谢谢!
修复:
我错过了一组空花括号:
<%= f.select(:property_type, options_for_select(@types.map {|type| [type.titleize, type]}, listing.property_type), {}, {'v-model': 'propertyType'}) %>
答案 0 :(得分:0)
根据评论和您自己的修正进行总结,并提供一些可能对将来的用户有所帮助的其他信息。
v-model
v-model
v-model
不在源中,则select
方法的格式很可能有问题
select(method, choices = nil, options = {}, html_options = {}, &block)
API docs options
和html_options
都接受哈希,因此明确地包含两者都更安全,因此Ruby知道如何解析它(即使这意味着包括一个空哈希)。### Correct examples
# multi-line format for readability
# select(
# method,
# choices = nil,
# options = {},
# html_options = {}
# )
# no `options` provided, but explicit empty `options` hash '{}' ('The fix' in the original post)
<%= f.select(
:property_type, # method
options_for_select(@types.map {|type| [type.titleize, type]}, listing.property_type), # choices
{}, # options
{'v-model': 'propertyType'} # html_options
) %>
# with `options` values
<%= f.select(
:property_type, # method
options_for_select(@types.map {|type| [type.titleize, type]}, listing.property_type), #choices
{include_blank: 'Select your type...'}, # options
{'v-model': 'propertyType'} # html_options
) %>