Ruby on rails rails表单中单选按钮的标签
我的问题类似于 但是对于Rails应用程序 我有一个带有一些单选按钮的表单,希望将标签与它们关联起来。Ruby on rails rails表单中单选按钮的标签,ruby-on-rails,forms,Ruby On Rails,Forms,我的问题类似于 但是对于Rails应用程序 我有一个带有一些单选按钮的表单,希望将标签与它们关联起来。标签表单帮助器仅将表单字段作为参数,但在本例中,对于单个表单字段,我有多个单选按钮。我看到的唯一方法是手动创建标签,对单选按钮自动生成的ID进行硬编码。有人知道更好的方法吗 例如: <% form_for(@message) do |f| %> <%= label :contactmethod %> <%= f.radio_button :conta
标签
表单帮助器仅将表单字段作为参数,但在本例中,对于单个表单字段,我有多个单选按钮。我看到的唯一方法是手动创建标签,对单选按钮自动生成的ID进行硬编码。有人知道更好的方法吗
例如:
<% form_for(@message) do |f| %>
<%= label :contactmethod %>
<%= f.radio_button :contactmethod, 'email', :checked => true %> Email
<%= f.radio_button :contactmethod, 'sms' %> SMS
<% end %>
true%>电子邮件
短讯服务
这会产生如下结果:
<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
Contactmethod
电子邮件
短讯服务
我想要的是:
<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>
电子邮件
短讯服务
正确%>
如果要在任何ID前面加上对象名,则应在表单对象上调用表单帮助程序:
- form_for(@message) do |f|
= f.label :email
这还可以确保在出现任何验证错误等情况下,任何提交的数据都存储在内存中
如果无法在表单对象上调用form helper方法,例如,如果正在使用标记辅助对象(单选按钮标记等),则可以使用以下方法插入名称:
= radio_button_tag "#{f.object_name}[email]", @message.email
在这种情况下,您需要手动指定值以保留任何提交。将
:value
选项传递到f.label
将确保标签标签的for
属性与相应的单选按钮的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 %>
'电子邮件'%>
'短信'>
看
:value选项,该选项设计为单选按钮标签的目标标签
如果传递给表单的模型已填充此属性,则使用true
/false
作为值将预先填充字段:
=f.单选按钮(:public?,true)
=f.标签(:public?,“yes”,值:true)
=f.单选按钮(:public?,false)
=f.标签(:public?,“no”,值:false)
这是我项目中使用单选按钮及其标签进行评级的示例
还有另一种方法:将:value
选项传递给f.label
也会做同样的事情。e、 g.“短信”%>
。这将正确设置标签标签的“for”属性,从而使单击标签选择相应的单选按钮。在上面的答案中,当使用FormBuilder创建单选按钮时,简单地使用标签
助手将导致“for”属性不正确。我只是想说,作为Rails的新手,我发现这个答案是我一直在重复的。这是不断给予的礼物。好吧,直到我记住正确的语法为止……:)如果您希望有条件地为将来的读者设置checked
值,也请选中此项,John Dou对此问题有正确的答案。这个答案不再正确了。好吧,这个可能有0票,因为它是在几个月后回答的,但实际上它是好的。警告:您需要Rails>=2.3.3此方法还可以在必要时呈现带有错误的字段(在使用:contactmethod\u email
方法时不会显示)。这是正确的答案!
<% 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 %>