2013-02-13 59 views
1

我是RoR的新手。我想知道如何在创建新记录时第一次创建单选按钮默认值?Ruby On Rails:使单选按钮默认选中第一次

我试图

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

这使得第一个单选按钮(其值现在)检查,但是当我选择第二个单选按钮(未来),并保留其他强制性领域的空白表格,然后又是第一个无线电成为选择而不是第二。

如何解决这个问题。

注:字段“调度”只是这个形式,如果选择了“未来”选项,将显示包含一个DateTimePicker另一个HTML和的DateTimePicker场“schedule_date”是该模型的实际字段上的虚拟场。如果选项“现在”已发布,那么只需将当前日期和时间保存到数据库表的“schedule_date”字段中即可。所以我只需使用这些单选按钮来显示/隐藏HTML。

回答

2

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

所以在控制器的创建方法,你已经在控制器的新方法类似

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

您有:

@now = true 

,并在视图:

<%= radio_button_tag 'scheduler', 'now', @now%> Now <br> 
<%= radio_button_tag 'scheduler', 'future', [email protected] %> Future<br> 
+0

好吧,这将使得代码 “现在” 选项默认情况下只选择第一次? – neeraj 2013-02-13 08:22:06

+0

你在新方法中做到这一点 - 请参阅编辑 – chrispanda 2013-02-13 08:27:14

+0

这样好多了。 – neeraj 2013-02-13 08:29:27

0

这是真实的,因为您已将第一个单选按钮设置为默认选择。所以,当你选择第二个单选按钮,然后刷新/提交表单时,页面会到达原来的位置,失去先前选定的第二个按钮。

这就像您输入表单字段然后刷新表单或在回去之后再次返回表单一样,您将丢失先前填充的数据。

解决方案:

我说得到了检查单选按钮值和使用jquery原样

$('input[name="myradios"]').change(function() { 
      alert($(this).val()); 
    }); 
+0

我得到了同样的问题,但最好的想法是什么? – 2013-02-13 08:13:47

+0

我不想为此使用JQuery。 – neeraj 2013-02-13 08:30:10

0

尝试设置:

<%= radio_button_tag 'scheduler', 'now', true %> Now <br> 
<%= radio_button_tag 'scheduler', 'future', params[:scheduler].eql?("future") %> Future<br> 
+0

谢谢,我可以使这个领域的“调度”作为我的模型的虚拟领域? – neeraj 2013-02-13 08:20:30

+0

你的代码工作正常,但我看到,当我选择选项“未来”,然后它被选中,但现在的属性被设置为“checked ='checked'”,因为我们已经为此给出了硬编码的真值,不正确。 – neeraj 2013-02-13 08:28:06