如何将传入的 class 添加到 Rails 的部分元素中?
How do I add a passed in class to an element in a partial in 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
图表之间的唯一区别是我添加的 class,.chart1Option
或 .chart2Option
。当前的解决方案有效,但不是很干,尤其是有 5 个图表,每个图表有 6 个元素。
如何设置一个部分,这样我就不必重复每个部分并输入我要添加的 class 的名称?正确设置部分后,如何将该变量名称作为 class 添加到 HAML 中的元素?
您可以将它们提取到助手中。嗯,也许是类似的东西? (未经测试: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
您也可以通过另一个部分对其进行 DRY,然后在助手中调用该部分并将 haml 代码放入其中。
def question_group(num)
render partial: 'question_group', locals: { num: num }
end
HAML 部分
%select{class: "chart#{num}Option"}
%option ..
我有一个用于呈现多个图表的表单。我有多个图表的多个表单元素,但是每个图表的元素是相同的。这是一个简化的例子:
/ 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
图表之间的唯一区别是我添加的 class,.chart1Option
或 .chart2Option
。当前的解决方案有效,但不是很干,尤其是有 5 个图表,每个图表有 6 个元素。
如何设置一个部分,这样我就不必重复每个部分并输入我要添加的 class 的名称?正确设置部分后,如何将该变量名称作为 class 添加到 HAML 中的元素?
您可以将它们提取到助手中。嗯,也许是类似的东西? (未经测试: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
您也可以通过另一个部分对其进行 DRY,然后在助手中调用该部分并将 haml 代码放入其中。
def question_group(num)
render partial: 'question_group', locals: { num: num }
end
HAML 部分
%select{class: "chart#{num}Option"}
%option ..