2011-10-04 61 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