2016-03-15 60 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 .. 
相关问题