简单表格 - Rails 4 - 编辑
Simple Form - Rails 4 - editing
我正尝试在我的 rails 4 应用程序中使用简单的表单。
我有一个项目模型,它有一个范围模型。范围属于项目。我有第三个模型,称为参与者,它属于范围。范围接受参与者的嵌套属性,项目接受范围的嵌套属性。
当我创建一个新项目时,我的表单有部分,它们是每个范围和参与者的嵌套表单。在我的范围表中,我询问这个项目是否涉及参与者。如果答案为真,我将使用 JS 表单助手来显示包含参与者表单的隐藏部分。
如果在创建项目后,我想编辑它,编辑功能 returns 我到项目表单,它显示参与者的复选框(为真),但隐藏参与者表单。
我的问题是,如果参与者复选框被选中,那么应该显示嵌套在项目表单中的参与者表单。我的 JS 表单助手隐藏此表单,直到该框被选中为真,这在创建模式下工作正常,但我需要取消选中范围表单中的参与者框并重新选中它以显示参与者表单 -这样我就可以编辑这些字段了。
如果询问参与的范围问题为真,您知道如何在不取消选中并重新选中表格的情况下显示参与者表格吗?
我的代码如下:
在我的 JS 表单助手中,我有(它隐藏了参与者嵌套表单,除非询问是否寻求参与的范围问题为真):
$(document).on 'change', '#' + inString + '_scope_attributes_if_participant', ()->
if $('#' + inString + '_scope_attributes_if_participant').is(':checked')
$('#participationrequest').show()
else
$('#participationrequest').hide()
在我的范围表单中,我有:
<%= s_all.input :if_participant, :as => :boolean, :label => false, inline_label: 'Public participants or volunteers' %>
谢谢
您目前只检查复选框在更改时是否被选中。但是,当加载表单并选中该框时,不会触发更改事件,因此您的代码不会执行。
要在页面加载时进行检查 运行,请将类似的内容添加到您的 JS(请原谅我用 JS 而不是 coffeescript 编写它):
$(document).on('ready',function(){
if $('#' + inString + '_scope_attributes_if_participant').is(':checked')
$('#participationrequest').show();
}
请注意,您不需要在此处检查其他部分,因为默认情况下会隐藏 #participationrequest
元素。
试试这个:
<div id='participationrequest' style='<%= "display:none;" unless scope.if_participant? %>'>
<%= render partial: 'you_form_partial' %>
</div>
if $('#' + inString + '_scope_attributes_if_participant').is(':checked')
$('#participationrequest').show()
else
$('#participationrequest').hide()
$(document).on 'change', '#' + inString + '_scope_attributes_if_participant', ()->
if $('#' + inString + '_scope_attributes_if_participant').is(':checked')
$('#participationrequest').show()
else
$('#participationrequest').hide()
我正尝试在我的 rails 4 应用程序中使用简单的表单。
我有一个项目模型,它有一个范围模型。范围属于项目。我有第三个模型,称为参与者,它属于范围。范围接受参与者的嵌套属性,项目接受范围的嵌套属性。
当我创建一个新项目时,我的表单有部分,它们是每个范围和参与者的嵌套表单。在我的范围表中,我询问这个项目是否涉及参与者。如果答案为真,我将使用 JS 表单助手来显示包含参与者表单的隐藏部分。
如果在创建项目后,我想编辑它,编辑功能 returns 我到项目表单,它显示参与者的复选框(为真),但隐藏参与者表单。
我的问题是,如果参与者复选框被选中,那么应该显示嵌套在项目表单中的参与者表单。我的 JS 表单助手隐藏此表单,直到该框被选中为真,这在创建模式下工作正常,但我需要取消选中范围表单中的参与者框并重新选中它以显示参与者表单 -这样我就可以编辑这些字段了。
如果询问参与的范围问题为真,您知道如何在不取消选中并重新选中表格的情况下显示参与者表格吗?
我的代码如下:
在我的 JS 表单助手中,我有(它隐藏了参与者嵌套表单,除非询问是否寻求参与的范围问题为真):
$(document).on 'change', '#' + inString + '_scope_attributes_if_participant', ()->
if $('#' + inString + '_scope_attributes_if_participant').is(':checked')
$('#participationrequest').show()
else
$('#participationrequest').hide()
在我的范围表单中,我有:
<%= s_all.input :if_participant, :as => :boolean, :label => false, inline_label: 'Public participants or volunteers' %>
谢谢
您目前只检查复选框在更改时是否被选中。但是,当加载表单并选中该框时,不会触发更改事件,因此您的代码不会执行。
要在页面加载时进行检查 运行,请将类似的内容添加到您的 JS(请原谅我用 JS 而不是 coffeescript 编写它):
$(document).on('ready',function(){
if $('#' + inString + '_scope_attributes_if_participant').is(':checked')
$('#participationrequest').show();
}
请注意,您不需要在此处检查其他部分,因为默认情况下会隐藏 #participationrequest
元素。
试试这个:
<div id='participationrequest' style='<%= "display:none;" unless scope.if_participant? %>'>
<%= render partial: 'you_form_partial' %>
</div>
if $('#' + inString + '_scope_attributes_if_participant').is(':checked')
$('#participationrequest').show()
else
$('#participationrequest').hide()
$(document).on 'change', '#' + inString + '_scope_attributes_if_participant', ()->
if $('#' + inString + '_scope_attributes_if_participant').is(':checked')
$('#participationrequest').show()
else
$('#participationrequest').hide()