1

我是 RoR 的新手。我想知道我们如何在创建新记录时第一次默认选择单选按钮?

我试过

<%= radio_button_tag 'scheduler', 'now', true%> Now <br>
<%= radio_button_tag 'scheduler', 'future'%> Future<br> 

它使第一个单选按钮(现在有值)被选中,但是当我选择第二个单选按钮(未来)并将表单上的其他必填字段留空时,再次选择第一个单选而不是第二个。

如何解决这个问题。

注意:字段“scheduler”只是此表单上的一个虚拟字段,如果选择了“Future”选项,它将显示另一个包含 datetimepicker 的 HTML,并且 datetimepicker 字段“schedule_date”是模型的实际字段。如果发布选项“现在”,那么它会将当前日期和时间保存到该字段“schedule_date”的数据库表中。所以我只需要使用这些单选按钮来显示/隐藏 HTML。

4

3 回答 3

2

当您说“将必填字段留空”时,我猜您正在提交表单并从服务器获取编辑表单并带有警告闪烁?我认为您需要在这里做的不是将 Now 字段设置为 true,而是在创建新表单时使用变量并将其设置为 true。然后,当您将表单提交到服务器时,控制器的创建方法应该查看参数哈希,设置变量,如果提交失败验证应该返回编辑表单,将 Now 变量设置为 false,Future 变量设置为 true

所以在控制器的创建方法中你有类似的东西

@now = params[:scheduler][:now]

在控制器的新方法中,您拥有:

@now = true

在视图中:

    <%= radio_button_tag 'scheduler', 'now', @now%> Now <br>
<%= radio_button_tag 'scheduler', 'future', !@now %> Future<br> 
于 2013-02-13T07:59:27.040 回答
0

这是真的,因为您已将第一个单选按钮设置为默认选中。因此,当您选择第二个单选按钮然后刷新/提交表单时,页面会回到原来的位置,丢失之前选择的第二个按钮。

这就像你输入表单域然后刷新表单或返回后再次返回表单时,你丢失了之前填写的数据。

解决方案:

我说获取选中的单选按钮值并使用 jquery 将其设置为-

    $('input[name="myradios"]').change(function() {
             alert($(this).val());
    });
于 2013-02-13T08:06:17.233 回答
0

尝试:

<%= radio_button_tag 'scheduler', 'now', true %> Now <br>
<%= radio_button_tag 'scheduler', 'future', params[:scheduler].eql?("future") %> Future<br> 
于 2013-02-13T08:18:22.177 回答