2011-09-13 4 views
2

project_score, employee_scorecompany_score 필드가 모두 해당 값을 데이터베이스에 매핑하도록 모델을 어떻게 설정할 수 있습니까? 있는 방법에 거기에 4레일 - 양식 값을 데이터베이스에 매핑

-3
'긴급'지도에 2
'매우 높음'지도에 1
'높은'지도에

'낮은'맵이 무슨 뜻인지입니다 내보기에서 텍스트 출력을 가져 와서 저장하기 전에 텍스트를 다시 숫자로 변환 하시겠습니까? 감사.

답변

2

나는 당신이 idname 열이있는 데이터베이스 테이블에 Score의가 있다면, 또는

<%= form_for @something do |f| %> 
    <%= f.select :project_score, [["Low", 1], ["High", 2], ["Very High", 3], ["Urgent", 4]] %> 
    <%= f.select :employee_score, [["Low", 1], ["High", 2], ["Very High", 3], ["Urgent", 4]] %> 
    <%= f.select :company_score, [["Low", 1], ["High", 2], ["Very High", 3], ["Urgent", 4]] %> 
<% end %> 

을 다음과 같이 무엇을 요구하는지 것은 생각합니다. 당신이 점수

belongs_to :project_score, :class_name => 'Score'

에 연결을 만들보다는 정수를 사용하는 것이

<%= form_for @something do |f| %> 
    <%= f.select :project_score_id, Score.all.map{|s| [s.name, s.id]} %> 
<% end %> 

. http://code.alexreisner.com/articles/form-builders-in-rails.html : 이것은 또한 당신은 또한 도로 아래로 쉽게하기 위해 score_select의 어떤 모양을 만들 것입니다 정의 FormBuilder를 만들 수 project_score_id, employee_score_id, company_score_id

에 필드를 변경할 것을 의미한다. 당신이 Score 테이블과 belongs_to 협회 접근

<%= @something.project_score.name %>

0
을했다 경우

module ScoreHelper 
    def score_display(score) 
    case score 
     when 1 
     "Low" 
     when 2 
     "High" 
     when 3 
     "Very High" 
     when 4 
     "Urgent" 
    end 
    end 
end 

# in your view 
<%= score_display(@something.project_score) %> 

을 또는 :

표시, 당신은 또한 적절한 하나의 표시 도우미 메서드의 형태가 필요합니다

다음과 같이 모델을 설정할 수 있습니다.

RATINGS = [ 
    ["Low", 1], 
    ["High", 2], 
    ["Very High", 3], 
    ["Urgent", 4] 
] 

그런 다음 <%= obj.select Model::FREQUENCY.each { |w| w } %>보기에 있습니다.

관련 문제