2011-10-04 47 views
0

我的编辑操作在视图中的一系列单选按钮。我想填写当前选定字段的值。我设法得到这个工作,但我觉得代码可能是更好的,也或许应该是在模型中。重构和代码放置

控制器:

 def edit 
      @rating = Rating.find(params[:id]) 

     @a,@b,@c,@d,@e,@f,@g,@h,@i,@j = false 
      if @rating.environ == 1 
     @a = true 
      elsif @rating.environ == 2 
     @b = true 
      elsif @rating.environ == 3 
     @c = true 
      elsif @rating.environ == 4 
     @d = true 
     . 
     . 
     . 
     etc. 

观点:

  1<%= f.radio_button :environ, 1, :checked => @a %> 
     2<%= f.radio_button :environ, 2, :checked => @b %> 
     3<%= f.radio_button :environ, 3, :checked => @c %> 
     . 
     . 
     etc.. 
+0

这大概应该是[代码审查(http://codereview.stackexchange.com/)。 – eykanal

回答

0

你是什么型号的代码?我猜测评级有很多种方法吗?

在任何情况下,你可以通过所有这些视图只是循环,使你:检查参数的Boolean。

<% @environs.each do |env| -%> 
    <%= f.radio_button :environ, env.id, :checked => (@rating.environ == env) %> 
<% end -%> 
+0

ENVIRON是得分的一个属性。 – chief

+0

那么我主要关心的是,我计划有10个属性像这样被鉴定的每10个实例变量和10个ELSIF语句。所有这些都意味着控制器的编辑方法中有100个实例变量和100个elsif语句! – chief

+0

你有什么需要的实例变量和ELSIF语句?我的意思是,如果他们都是可预测的,你可以做一个循环 – corroded