2011-10-24 61 views
0

我對Rails比較陌生,現在正在構建演示黑板。Rails:根據數據庫條目決定渲染spefic圖像

有許多用戶可以回覆的主題。發表的意見有一個投票:積極,消極或中立。這些由複選框選中。

在主題show - view中,您可以看到已經發布的意見。對於每個意見,應該呈現一個向上/向下/中性的圖像。

現在,我使用了新的opinon形式HAML和formtastic:

=f.input :vote, :as => :radio, :label => "Your vote", | 
:collection => [["positive","/images/Thumbs-up-icon.png"],["negative","/images/Thumbs-down-icon.png"],["neutral","/images/Thumbs-neutral-icon.png"]] | 

的主題展覽的重要組成部分,是這樣的:

- @opinions.each do |opinion| 
[...] 
     #opinion_vote 
      = image_tag opinion.vote , {:height=>60}   

正如你可以直接看到,我每次將三個image_url中的一個保存在數據庫中,以便直接使用它們在我的主題視圖中呈現圖像。

我知道,這在許多層面上都很糟糕,但它是迄今爲止我發現的唯一工作解決方案。 我的想法是將投票保存爲整數,如1表示正數,0表示中性,-1表示負數。下一步將是在我的主題視圖中有一個案例來決定哪個圖像應該是renderen。但是,邏輯在視圖中是不好的...

但是,什麼是最好的方式和地方在Rails決定什麼樣的圖像應該顯示?主題控制器?意見模式?幫手?最後:代碼如何顯示;)?

謝謝。

回答

0

這是你可以使用助手的地方,可能與某些模型方法結合使訪問數據變得更簡單。

意見型號

def neutral? 
    if vote == 0 
end 

def positive? 
    if vote == 1 
end 

def negative? 
    if vote == 2 
end 

意見助手

def vote_image 
    vote.positive? ? 'positive.png' : vote.negative? ? 'negative.png' : 'neutral.png' 
end 

正如你所說,這是最好的存儲這樣的事情在整數而不是文本,因爲它們更小,存儲和更有效地索引您的數據。

+0

謝謝Lloy,做到了! – SDD64