2010-01-09 149 views
5

根據(有些官員)this guide,我可以做一個單選按鈕的標籤作爲該單選按鈕的選擇。他們說,有單選按鈕的標籤也可以選擇嗎?

總是使用每個複選框和單選按鈕的標籤。他們聯想文本與特定選項提供較大的可點擊區域

不幸的是,我一直無法爲我的表單獲得此功能。這裏是我的代碼:

<% form_for(@bet) do |f| %> 
    <%= f.label :bet_type %> 
    <%= f.radio_button :bet_type, "moneyline" %> 
    <%= f.label :bet_type_moneyline, "Moneyline" %> 
    <%= f.radio_button :bet_type, "spread" %> 
    <%= f.label :bet_type_spread, "Spread" %> 
<% end %> 

我也試過這個(因爲這是使用FormTagHelper而不是表單助手的例子的方式):

<% form_for(@bet) do |f| %> 
    <%= radio_button_tag :bet_type, "moneyline" %> 
    <%= label_tag :bet_type_moneyline, "Moneyline" %> 
    <%= radio_button_tag :bet_type, "spread" %> 
    <%= label_tag :bet_type_spread, "Spread" %> 
<% end %> 

但是,我仍然無法得到它的工作。我使用rails 2.3.5和ruby 1.8.7。

感謝您的閱讀,也許有幫助!

+1

你能告訴我們什麼上面的代碼輸出? – 2010-01-09 07:36:15

回答

6

一個簡單的方法爲單選按鈕做,這是輸入標籤放置標籤裏面,像這樣:

<label> 
    <input /> 
    This is an input! 
</label> 

這是實現你的目標的有效途徑。

在Rails的label助手可以接受一個塊,所以你可以這樣做:

<%= f.label :moneyline do %> 
    <%= f.radio_button :bet_type, "moneyline" %> 
    "Moneyline" 
<% end %> 
0

Woops!對不起所有。我發現這個錯誤有點不誠實。

我用手寫了這篇文章的代碼...沒有複製粘貼。爲了保持清楚,我重命名了一些我使用的值,因爲我運行的代碼有點亂(AND顯然是不正確的)。所以,當Gaby要求我爲這些代碼塊獲得一些輸出時,我堅持認爲他們在我看來,並且瞧!選擇各自單選按鈕的標籤!但爲什麼?!

嗯,這是事情。看着輸出,我意識到我的原始代碼並沒有生成一致的input.id和label.for html中的值。它看起來是這樣的:

<%= f.radio_button :bet_type, "moneyline" %> 
<%= f.label :moneyline, "Moneyline" %> 

這產生:

<input id="bet_type_moneyline" name="bet_type type="radio" value="moneyline" /> 
<label for="moneyline">Moneyline</label> 

瞭解如何input.id和label.for有什麼不同?

而且只有當我運行問題中的代碼時,我是否得到了該權限。

它看起來像這樣工作:單選按鈕標記方法使input.id從它的(object_name +「_」+ value)中生成,標籤標記方法使label.for從它的object_name中生成。 當這兩個相等時,你會得到一個選擇標籤。

我希望這個發現可以幫助其他人排隊。

對不起,你的齒輪磨光了!

3

不知道軌可言,HTML的要求很簡單:你必須構建你的標籤是這樣的:

<input id="bet_type_moneyline" name="bet_type" type="radio" value="moneyline"> 
<label for="bet_type_moneyline">Moneyline</label> 

所以,首先,檢查你的HTML,在你的榜樣,你必須在...... NAME =「bet_type類型=」無線電缺失報價」 ......

其次,對於=‘’總是點一個t字段的ID。

現在你有一個可點擊的字段bet_type!

希望它有幫助!

4
<%= f.radio_button :bet_type, "moneyline" %> 
<%= f.label :moneyline, "Moneyline", :for => "bet_type_moneyline" %> 
+0

真棒 - 實際上工作(Rails 4),不像更高級別的點擊標籤什麼都不做。 – JosephK 2017-06-20 15:53:38

6

您可能會找到一個解決方案,但它可以幫助其他人。我正在使用Rails 4+。

您可以使用Rails' FormHelper's label method使用「value」鍵將參數設置爲參數,從而使標籤可以正確點擊。

label(:post, :privacy, "Public Post", value: "public") 
# => <label for="post_privacy_public">Public Post</label> 

爲您的代碼,它應該像

<%= f.radio_button :bet_type, "moneyline" %> 
<%= f.label :bet_type, "Moneyline", value: "moneyline" %> 
<%= f.radio_button :bet_type, "spread" %> 
<%= f.label :bet_type, "Spread", value: "spread" %> 

希望它能幫助:)

+0

我錯過了「價值」,非常感謝! – AndrewSouthpaw 2017-05-19 08:50:01