Rails 4&咖啡脚本表单助手隐藏在未选中的字段上

时间:2015-06-21 01:24:16

标签: ruby-on-rails forms coffeescript

我正在尝试在Rails 4中创建一个应用程序。

我使用简单的表单形式,并有一个js表单帮助文件,我用它来隐藏或显示表单元素,具体取决于用户在表单中移动时如何回答问题。

我的问题是这个js函数在初始创建时工作正常,但是如果我回来编辑表单,那么当draft属性为== false时会显示提醒id内容。

有没有其他方法可以解决这个问题?

我的表格有:

if $("input:radio[name='"+ inString + "[scope_attributes][finalise_attributes][draft]']").is(':checked')
  $('#reminder').show()
else
  $('#reminder').hide()
$(document).on 'change', "input:radio[name='"+ inString + "[scope_attributes][finalise_attributes][draft]']", ()->
  if $(this).val() == 'true'
    $('#reminder').show()
  else
    $('#reminder').hide()

我的js form-helper文件有:

{{1}}

2 个答案:

答案 0 :(得分:0)

可能有几种不同的方法可以做到这一点,但我做了一些非常相似的事情。

将id或类附加到稍后可用于绑定的单选按钮(在我的情况下,对于每个无线电/值组合,我添加了一个像class: this_radio_value_true这样的唯一类。)

同样,将id或类附加到您想要影响的标记部分(在我的情况下,我将一个id添加到我想要隐藏/显示为id: stuff_to_control的form_group)。

触发这些元素的jQuery:

$('.this_radio_value_true').on('click', function() {
  $('#stuff_to_control').show();
});

$('.this_radio_value_false').on('click', function() {
  $('#stuff_to_control').hide();
});

答案 1 :(得分:0)

这可能是因为TurboLinks。您无法使用$(document).on 'change'。您必须列出TurboLink事件。 Rails每次都不会加载整个页面。它只加载布局中的内容。你必须使用

 $(document).on 'ready page:load', ->

以下是文档:https://github.com/rails/turbolinks/#events

指南:http://guides.rubyonrails.org/working_with_javascript_in_rails.html#page-change-events