2011-03-23 23 views
1

默认情况下是选择radio_button还是以前在一行代码中选择它?在rails3中默认选择的radio_button

我第一次尝试这样的:

- if @job.new_record? 
    = f.radio_button :environment_id, env.id, :checked => env.is_default 
- else 
    = f.radio_button :environment_id, env.id, :checked => @job.environment == env 

我试着用重构这个:

= f.radio_button :environment_id, env.id, :checked => (@job.andand.environment == env) || env.is_default 

但是,问题是,如果默认选择是工作环境后,就会选择默认选择。

任何其他建议?

回答

2

我可能只是在控制器中设置模型的默认值。这个逻辑不应该放在意见中。我不知道你的模型是如何工作的,因为我不知道模型的结构或“默认”值的来源,但是如果你在控制器中设置了默认值,那么单选按钮将被选中如果它与您的案例中的env.id相匹配

# In Controller 
@job = Job.new(:environment_id => "foo") 

# In the view 
= f.radio_button :environment_id, "foo" 
= f.radio_button :environment_id, "bar" 

在这种情况下,将会选择第一个单选按钮。

+0

默认值是在环境模型(职业都有一个环境)的一个字段,它可以使用environment.is_default进行检查?此外,有可能没有默认环境 – corroded 2011-03-23 10:19:18

+0

Okey,然后在控制器中设置该值,应该工作正常 – DanneManne 2011-03-23 10:34:16

+0

是否有解决方案,不应该涉及到在控制器中设置它? – corroded 2011-03-23 10:41:44

0

使用radio_button_tag

=radio_button_tag environment_id, env.id, (@job.andand.environment == env) 
+0

和默认情况下呢?会检查它是否是一项新工作? – corroded 2011-03-23 15:16:58