2015-10-16 90 views
0

project.rb選擇隱藏和標籤從枚舉

class Project < ActiveRecord::Base 
    has_many :details, dependent: :destroy 

    accepts_nested_attributes_for :details, allow_destroy: true 

end 

details.rb

class Details < ActiveRecord::Base 
    belongs_to :project 

    enum question: { 
    0: "Question 1...", 
    1: "Question 2..." 
    } 

end 

細節表

create_table "details", force: :cascade do |t| 
    t.integer "project_id" 
    t.integer "question" 
    t.string "answer" 
    end 

項目形式

= form_for @project do |f| 

    ... 

    %h3 Questions 
    = f.fields_for :details do |d| 
    .nested-fields 
     .field 
     = d.label (question value here) 
     = d.hidden_field (question ID here) 
     = d.text_field :answer 
     %br/ 

    ... 

    .actions 
    = f.submit "Submit" 

基本上我的項目有一個細節表,假設存儲5個問題的集合。這些問題是靜態的,並且始終是相同的。我認爲解決方案是製作和枚舉,並在詳細信息表中存儲問題的ID和字符串以及答案。但現在我堅持使用該表單,並且希望能夠幫助您創建和編輯項目詳細信息。在表單代碼中,您可以準確找到我想要在僞代碼中執行的操作。我也會接受不同的實施解決方案。謝謝!

回答

1

您以錯誤的方式使用ActiveRecord::Enum。它的目的是值映射到整數:

enum question: {question1: 1, question2: 2}

,當你用它來映射整數值。我建議你創建一個簡單的存取方法:

def questions(index) 
    ["Question1", "Question2"][index] 
end 

所以,你可以挑選這樣的問題:

Detail.questions(n)

順便說一句,如果你使用Detail只是拿着論文問題,擺脫它,並把上述方法在Project

+0

我使用詳細信息來解答問題,因爲我想保留每個問題所屬的每個答案的記錄。訪問器方法似乎是一個很好的方法,我會試一試。謝謝。 – Nuno