CmsService::SearchContentPractiseProblems.form_fields.each do |field|
if field[:key].to_s === "answer_a"
row field[:key] do
content['answers']['answer_a']
end
elsif field[:key].to_s === "answer_b"
row field[:key] do
content['answers']['answer_b']
end
elsif field[:key].to_s === "answer_c"
row field[:key] do
content['answers']['answer_c']
end
elsif field[:key].to_s === "answer_d"
row field[:key] do
content['answers']['answer_d']
end
else
row field[:key] do
content[field[:key].to_s]
end
end
在這里,如果 elsif 通過回圈,我想寫以下內容,但我堅持要獲得解決方案有人可以幫助我嗎
我的表單欄位是:
def self.form_fields
[
{ key: :code, label: "Code"},
{ key: :ordering, label: "Ordering"},
{ key: :content, label: "Practise Question", editable: true},
{ key: :answer_a, label: "Answer A", editable: true},
{ key: :answer_b, label: "Answer B", editable: true},
{ key: :answer_c, label: "Answer C", editable: true},
{ key: :answer_d, label: "Answer D", editable: true},
{ key: :explaination, label: "Answer Exp.", editable: true}
]
end
處理后我想要的回應是
{
"code": "ascending-order-pq-1",
"content": "Arrange the following numbers in ascending order.\n22, 2322, 2222, 222",
"ordering": 1,
"answers": {
"answer_b": "22 < 222 < 2222 < 2322",
"answer_a": "22 < 222 < 2322 < 2222",
"answer_d": "2322 < 2222 < 222 < 22",
"answer_c": "22 < 2222 < 222 < 2322"
},
"correct": "answer_b",
"explaination": "While comparing multi-digit numbers, the numbers with the least number of digits come first. For multi-digit numbers with the same number of digits, we compare digits from left to right."
}
uj5u.com熱心網友回復:
你的代碼應該壓縮成這樣:
CmsService::SearchContentPractiseProblems.form_fields.each do |field|
answer_fields = %w[answer_a answer_b answer_c answer_d]
row field[:key] do
key = field[:key].to_s
if answer_fields.include?(key)
content['answers'][key]
else
content[key]
end
end
end
請測驗一下。
%w[a b c]相當于["a", "b", "c"]在 Ruby 中
if-else-end 控制結構只是在一天結束時回傳一些東西,所以
row field[:key] do
if condition
something
else
something_else
end
end
相當于
if condition
row field[:key] do
something
end
else
row field[:key] do
something_else
end
end
但第一個更緊湊,更不容易出錯
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/380426.html
上一篇:Heroku主動存盤S3Seahorse::Client::NetworkingError(Net::OpenTimeout)
