Rails 5 中的 Turbolinks 中断 Bootstrap Select 下拉菜单
Turbolinks in Rails 5 Break Bootstrap Select Dropdowns
我在 Heroku 上有一个 Rails 5 应用 运行,使用 Bootstrap 3。
我有这个表格:
.panel-body
.form-group.has-feedback
.text-muted
= f.label :kind, 'Swim, Bike or Run?'
= f.select :kind, Workout.kinds.keys.to_a.map { |s| [s.humanize, s] }, {}, class: 'select'
问题: 没有 Turbolinks 它呈现一个很好的'Select' 形式。 使用 Turbolinks 它呈现一个普通的浏览器下拉菜单。我想呈现漂亮的 'Select' class 形式。我可以禁用 Turbolinks,但我需要在应用程序的其他地方使用它。
我需要启用 Turbolinks,因为我正在将数据从 .coffee 文件注入到表单中。
查看:
.panel-footer.panel-footer-condensed
.heading-elements
span.heading-text
strong
a(
data-type="useTemplate"
data-kind=template.kind
data-distance=template.distance
data-duration=template.duration
data-notes=template.notes
)
| Use Template
咖啡文件:
$(document).on 'turbolinks:load', ->
$('a[data-type="useTemplate"]').click (e) ->
$('#workout_kind').val(e.target.dataset.kind)
$('#workout_distance').val(e.target.dataset.distance)
$('#workout_duration').val(e.target.dataset.duration)
$('#workout_notes').val(e.target.dataset.notes)
问题:如何让下拉菜单保持 'Select' class 的样式?
如果还有其他更简单的解决方案,我也很想听听。我试过使用 .on 'page:load' 和 .on 'document:load' 但它不会将值注入表单。
谢谢
尝试这样做,
css_property_name1|2 表示 css 属性名称,如高度、宽度、行高、填充等,可应用于样式元素
$(document).on 'turbolinks:load', ->
$('.select').css
'css_property_name1': 'property1value'
'css_property_name2': 'property2value'
Turbolinks 弄乱了应用程序中的一大堆东西,所以我决定简单地删除 Turbolinks 并将我的咖啡文件改为:
$ ->
$('a[data-type="useTemplate"]').click (e) ->
$('#workout_kind').val(e.target.dataset.kind)
$('#workout_distance').val(e.target.dataset.distance)
$('#workout_duration').val(e.target.dataset.duration)
$('#workout_notes').val(e.target.dataset.notes)
我在 Heroku 上有一个 Rails 5 应用 运行,使用 Bootstrap 3。
我有这个表格:
.panel-body
.form-group.has-feedback
.text-muted
= f.label :kind, 'Swim, Bike or Run?'
= f.select :kind, Workout.kinds.keys.to_a.map { |s| [s.humanize, s] }, {}, class: 'select'
问题: 没有 Turbolinks 它呈现一个很好的'Select' 形式。 使用 Turbolinks 它呈现一个普通的浏览器下拉菜单。我想呈现漂亮的 'Select' class 形式。我可以禁用 Turbolinks,但我需要在应用程序的其他地方使用它。
我需要启用 Turbolinks,因为我正在将数据从 .coffee 文件注入到表单中。
查看:
.panel-footer.panel-footer-condensed
.heading-elements
span.heading-text
strong
a(
data-type="useTemplate"
data-kind=template.kind
data-distance=template.distance
data-duration=template.duration
data-notes=template.notes
)
| Use Template
咖啡文件:
$(document).on 'turbolinks:load', ->
$('a[data-type="useTemplate"]').click (e) ->
$('#workout_kind').val(e.target.dataset.kind)
$('#workout_distance').val(e.target.dataset.distance)
$('#workout_duration').val(e.target.dataset.duration)
$('#workout_notes').val(e.target.dataset.notes)
问题:如何让下拉菜单保持 'Select' class 的样式?
如果还有其他更简单的解决方案,我也很想听听。我试过使用 .on 'page:load' 和 .on 'document:load' 但它不会将值注入表单。
谢谢
尝试这样做,
css_property_name1|2 表示 css 属性名称,如高度、宽度、行高、填充等,可应用于样式元素
$(document).on 'turbolinks:load', ->
$('.select').css
'css_property_name1': 'property1value'
'css_property_name2': 'property2value'
Turbolinks 弄乱了应用程序中的一大堆东西,所以我决定简单地删除 Turbolinks 并将我的咖啡文件改为:
$ ->
$('a[data-type="useTemplate"]').click (e) ->
$('#workout_kind').val(e.target.dataset.kind)
$('#workout_distance').val(e.target.dataset.distance)
$('#workout_duration').val(e.target.dataset.duration)
$('#workout_notes').val(e.target.dataset.notes)