簡體   English   中英

Ruby循環無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM