如何将HTML5数据属性添加到Rails表单标签标签? [英] How to add HTML5 data- attributes to a rails form label tag?
问题描述
<%= form_tag(../ vehicles,方法:get)do%>
< div>
< div>
<%= label_tag(:address,t(ui.reservations.pickup),data-addr:'here')%>
< / div>
< div>
<%= label_tag(:address,t(ui.reservations.between_now_and_param,param:@start_date.strftime(time_format)))%>
< / div>
< div>
我想为第一个标签添加一个HTML数据属性,所以我试过:
<%= label_tag(:address,t(ui.reservations.pickup),data-addr:'here')%> ;
但是我得到一个语法错误:
预订中的SyntaxError#new
... / _ form.html.erb:8:语法错误,意外的tLABEL
'); @ output_buffer.append =(label_tag(:address,t(ui.reservations.pickup),data-addr:'here')); @ output_buffer.safe_concat('...
我可以将它添加为
<%= label_tag(:address,t(ui.reservations.pickup),data:'here')%>
$
< label for =address data =here>
但我似乎无法添加
data-something
属性。我得到语法错误。
如何做到这一点?
<解决方案由@vee提供的答案将正确呈现此错误。您收到语法错误的原因是因为data-addr:'here'
无效r uby代码,也就是说,您不能使用带有连字符的键的JSON散列符号。您可以修改它以正常工作,如下所示:<%= label_tag(:address,t('ui.reservations。 'data-addr'=>'here'%>
但推荐的方法是声明'数据'属性的嵌套散列:
<%= label_tag(:address,t('ui .reservations.pickup'),:data => {:addr =>'here'}%>
或简单地(如@vee建议):
<%= label_tag(:address,t('ui .reservations.pickup'),data:{addr:'here'}%>
[OP编辑:]
我还发现下划线会产生破折号!例如:
<%= label_tag(:address ,t('ui.reservations.pickup'),data:{from_base:'here'}%>
产生
< label for =addressdata-from-base =here>
皮卡:
< / label>
I have a rails form that has this code:
<%= form_tag("../vehicles", method: "get") do %> <div> <div> <%= label_tag(:address, t("ui.reservations.pickup"), data-addr: 'here') %> </div> <div> <%= label_tag(:address, t("ui.reservations.between_now_and_param", param: @start_date.strftime( time_format))) %> </div> <div>
I want to add a HTML data attribute to the first label, so I tried:
<%= label_tag(:address, t("ui.reservations.pickup"), data-addr: 'here') %>
but I get a syntax error:
SyntaxError in Reservations#new
.../_form.html.erb:8: syntax error, unexpected tLABEL ');@output_buffer.append= ( label_tag(:address, t("ui.reservations.pickup"), data-addr: 'here') );@output_buffer.safe_concat('...
I can add it as
<%= label_tag(:address, t("ui.reservations.pickup"), data: 'here') %>
That generates:
<label for="address" data="here">
but I don't seem to be able to add
data-something
attributes. I get syntax error.How can I do this?
解决方案The answer provided by @vee will render this correctly. The reason you are getting a syntax error is because
data-addr: 'here'
is not valid ruby code. That is, you can't have use the JSON hash notation with a key containing a hyphen character. You can modify it to work properly like this:<%= label_tag(:address, t('ui.reservations.pickup'), 'data-addr' => 'here' %>
But the recommended approach is to declare a nested hash for 'data' attributes:
<%= label_tag(:address, t('ui.reservations.pickup'), :data => {:addr => 'here'} %>
Or simply (as @vee suggested):
<%= label_tag(:address, t('ui.reservations.pickup'), data: {addr: 'here'} %>
[OP edit:] I also found that underscores generate dashes! For example:
<%= label_tag(:address, t('ui.reservations.pickup'), data: {from_base: 'here'} %>
generates
<label for="address" data-from-base="here"> pickup: </label>
这篇关于如何将HTML5数据属性添加到Rails表单标签标签?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!