[英]Ruby Loops not working properly
我最近問了一個問題,關於在單選按鈕或Rails表單中的復選框的哈希中使用某些值而不是在標簽中進行硬編碼: 將哈希的元素用作單選按鈕 。 我試圖通過創建一個輔助方法來解決這個問題,該方法接受哈希值(基本上是數據庫中的一個表),並將所需的參數映射到數組中,但循環遍歷該數組; 雖然使用參數作為標簽並沒有產生預期的結果,但它輸出的是迭代器的值,而不是輸出我編寫的代碼行的結果。 下面是我的助手方法。
def sport_select(sport)
x = Sport.all.map {|e| e.sport_name}
for i in 1..x.length
check_box_tag(x[i], checked_value = 1, unchecked_value = 0)
end
end
第x = Sport.all.map {|e| e.sport_name}
行x = Sport.all.map {|e| e.sport_name}
x = Sport.all.map {|e| e.sport_name}
產生["sport_name", "sport_name"]
; 但是for循環僅顯示1..2
。 我嘗試更改x = Sport.all.map {|e| e.sport_name}
x = Sport.all.map {|e| e.sport_name}
到x = Sport.all.map {|e| [e.id, e.sport_name]}
x = Sport.all.map {|e| [e.id, e.sport_name]}
用作哈希,生成[[id, "sport_name"],[id, "sport_name"]]
但我在使用id
作為哈希鍵時遇到了問題。 任何幫助將不勝感激。 謝謝。
這不是理智的:
check_box_tag(x[i], checked_value = 1, unchecked_value = 0)
方法定義為:
check_box_tag(name, value = "1", checked = false, options = {})
你傳遞1 value
; 0 checked
。 您不能使用variable = value
來“命名”參數,您要做的就是設置變量,然后將相同的值傳遞給方法。
如果你想制作一個復選框,其中名稱是這項運動的名稱,它的價值是這項運動的ID,擺脫你對循環的,只是我們的一個循環:
def sport_select(sport)
Sport.all.map do |e|
check_box_tag(e.sport_name, e.id)
end
end
如果要將結果輸出到頁面,則可能還需要使用.join('').html_safe
返回單個字符串,並防止它被轉義。
這應將所有運動記錄顯示為單選按鈕:
def sports_as_radio_buttons(sports = Sport.scoped)
html = "".html_safe
sports.each do |sport|
html += radio_button_tag('sport_id', sport.id, id: "sport_#{sport.id}")
html += label_tag("sport_#{sport.id}", sport.name)
end
html
end
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.