2016-03-15 61 views
0

我有一個呈現多個圖表的表單。我有多個圖表的多個表單元素,但是每個圖表的元素都是相同的。這裏有一個簡單的例子:如何將一個傳入的類添加到Rails中的部分元素中?

/ Chart 1, Question 1 
%select.chart1Option 
    %option{value: '1'} Graduation Date 
    %option{value: '2'} Major 
    %option{value: '3'} GPA 

/Chart 1, Question 2 
%select.chart1Option 
    %option{value: '1'} Count 
    %option{value: '2'} Average 
    %option{value: '3'} Median 

/Chart 2, Question 1 
%select.chart2Option 
    %option{value: '1'} Graduation Date 
    %option{value: '2'} Major 
    %option{value: '3'} GPA 

/Chart 2, Question 2 
%select.chart2Option 
    %option{value: '1'} Count 
    %option{value: '2'} Average 
    %option{value: '3'} Median 

唯一不同的圖表之間是我添加的類別,無論是.chart1Option.chart2Option。目前的解決方案有效,但不是非常乾燥,特別是有5個圖表,每個圖表有6個元素。

我該如何設置一個部分,以便我不必重複每個部分並通過我想添加的類的名稱?一旦我正確設置了我的部分,如何將該變量名作爲類添加到HAML中的元素中?

回答

1

你可以將它們提取到幫手中。嗯,也許類似於這個? (未經測試:P)

def question_group(num) 
    q1_options = ['Graduation Date', 'Major', 'GPA'] 

    haml_tag :select, class: "chart#{num}Option" do 
    q1_options.each_with_index do |opt, index| 
     haml_tag :option, opt, value: index+1 
    end 
    # .. repeat 
    end 
end 

您還可以通過另一種偏乾性,並呼籲在幫手部分,並把HAML代碼在其中。

def question_group(num) 
    render partial: 'question_group', locals: { num: num } 
end 

HAML部分

%select{class: "chart#{num}Option"} 
    %option .. 
相關問題