我是RoR的新手。我想知道如何在创建新记录时第一次选择单选按钮默认值?
我试过
<%= radio_button_tag 'scheduler', 'now', true%> Now <br>
<%= radio_button_tag 'scheduler', 'future'%> Future<br>
它使第一个单选按钮(具有值现在)被选中,但是当我选择第二个单选按钮(未来)并在表单上留下其他必填字段时,则第一个无线电再次被选中而不是第二个。
如何解决此问题。
注意:字段“scheduler”只是此表单上的一个虚拟字段,如果选择“Future”选项并且datetimepicker字段“schedule_date”是实际的,则会显示包含datetimepicker的另一个HTML模型的领域。如果发布选项“Now”,则只需将当前日期和时间保存到该字段“schedule_date”的数据库表中。所以我只需要使用这些单选按钮来显示/隐藏HTML。
答案 0 :(得分:2)
当您说'将必填字段留空'时,我猜您是在提交表单并从服务器返回编辑表单并带有警告闪烁?我认为你需要做的不是将Now字段设置为true,而是在创建新表单时需要使用变量并将其设置为true。然后,当您将表单提交给服务器时,控制器的create方法应查看params哈希值,设置变量,如果提交失败,则验证应该返回编辑表单,其中Now变量设置为false,Future变量设置为true
所以在控制器的create方法中你有类似
的东西@now = params[:scheduler][:now]
在控制器的新方法中:
@now = true
并在视图中:
<%= radio_button_tag 'scheduler', 'now', @now%> Now <br>
<%= radio_button_tag 'scheduler', 'future', !@now %> Future<br>
答案 1 :(得分:0)
这是因为您已设置默认选择的第一个单选按钮。因此,当您选择第二个单选按钮,然后刷新/提交表单时,页面将返回其原始位置,从而丢失之前选择的第二个按钮。
这就像当您输入表单字段然后刷新表单或返回后再次返回表单时,您丢失了之前填充的数据。
解决方案:
我说获取已检查的单选按钮值并使用jquery将其设置为 -
$('input[name="myradios"]').change(function() {
alert($(this).val());
});
答案 2 :(得分:0)
尝试:
<%= radio_button_tag 'scheduler', 'now', true %> Now <br>
<%= radio_button_tag 'scheduler', 'future', params[:scheduler].eql?("future") %> Future<br>