ruby-on-rails - text_field_tag - simple_format rails




單軌按鈕的標籤形式 (2)

如果您希望將object_name作為任何ID的前綴,您應該在表單對像上調用表單助手:

- form_for(@message) do |f|
  = f.label :email

這也確保任何提交的數據存儲在內存中,如果有任何驗證錯誤等。

如果您不能在表單對像上調用表單幫助器方法,例如,如果您使用標記助手(radio_button_tag等),則可以使用以下內容插入名稱:

= radio_button_tag "#{f.object_name}[email]", @message.email

在這種情況下,您需要手動指定值以保留任何提交。

我的問題類似於這個,但對於Rails應用程序。

我有一個單選按鈕的表單,並希望將標籤與它們關聯。 label表單助手僅將表單域作為參數,但在這種情況下,我為單個表單域設置了多個單選按鈕。 我看到要做到這一點的唯一方法是手動創建一個標籤,硬編碼自動為單選按鈕生成的標識。 有誰知道更好的方法來做到這一點?

例如:

<% form_for(@message) do |f| %>
    <%= label :contactmethod %>
    <%= f.radio_button :contactmethod, 'email', :checked => true %> Email
    <%= f.radio_button :contactmethod, 'sms' %> SMS
<% end %>

這產生了類似於:

<label for="message_contactmethod">Contactmethod</label>
<input checked="checked" id="message_contactmethod_email" name="message[contactmethod]" value="email" type="radio"> Email
<input id="message_contactmethod_sms" name="message[contactmethod]" value="sms" type="radio"> SMS

我想要的是:

<input checked="checked" id="message_contactmethod_email" name="message[contactmethod]" value="email" type="radio"><label for="message_contactmethod_email">Email</label>
<input id="message_contactmethod_sms" name="message[contactmethod]" value="sms" type="radio"> <label for="message_contactmethod_sms">SMS</label>

:value選項傳遞給f.label將確保label標籤的for屬性與相應的radio_button的id相同

<% form_for(@message) do |f| %>
  <%= f.radio_button :contactmethod, 'email' %> 
  <%= f.label :contactmethod, 'Email', :value => 'email' %>
  <%= f.radio_button :contactmethod, 'sms' %>
  <%= f.label :contactmethod, 'SMS', :value => 'sms' %>
<% end %>

請參閱ActionView::Helpers::FormHelper#label

:value選項,該選項旨在為radio_button標籤定位標籤





forms