2013-08-09 3 views
4

Чтобы сделать Validations фундаментные работы, я должен добавить «-данных подчинится» атрибут тега формы, как это:Как добавить пустой атрибут в rails form_for tag?

<form data-abide> 

Как я могу это сделать с помощью form_for тег в рельсах?

Полный Рельсы код:

<%= form_for @member, html: {class: "custom"} do |f| %> 

ответ

-2

Попробуйте использовать

<% form_for @your_object, :html => {:data => {:abide => 'your-data-abide'}} do |f|%> 
+0

Это создаст «<форма data-abide = "your-data-abide>", но мне нужно

THpubs

+1

Я думаю, если вам нужно поместить любой атрибут в форму, вам нужно добавить к нему значение. –

+3

Я не понимаю, как это принятый ответ на этот вопрос. – aviemet

0

насчет <%= form_tag '', 'data-abide' => '' %>...<% end %> или <%= tag :form, 'data-abide' => '' do %><% end %>

Есть ли причина, чтобы использовать рельсы хелперы для него? Было бы проще просто использовать <form data-abide>?

+0

Im создает форму для модели. Чтобы добавить данные в модель. – THpubs

+0

'data-abide' => '' не будет работать :(Out side html :, он ничего не генерирует. Внутри html: (<% = form_for @member, html: {class: "custom", ' data-abide '=>' '},' data-abide '=>' 'do | f |%>), он будет генерировать data-abide = "" – THpubs

1

В рельсах form_for синтаксиса, вы можете сделать следующее:

:html => {"data-abide" => ''} 

Я использую следовать, а с форменными хелперов и он прекрасно работает таким образом.

0

Добавьте этот вспомогательный метод в помощнике приложения

def tag_options(options, escape = true) 
     unless options.blank? 
     attrs = [] 
     options.each_pair do |key, value| 
      if key.to_s == 'data' && value.is_a?(Hash) 
      value.each do |k, v| 
       unless v.is_a?(String) || v.is_a?(Symbol) || v.is_a?(BigDecimal) 
       v = v.to_json 
       end 
       v = ERB::Util.html_escape(v) if escape 
       attrs << %(data-#{k.to_s.dasherize}="#{v}") 
      end 
      elsif !value.nil? 
      final_value = value.is_a?(Array) ? value.join(" ") : value 
      final_value = ERB::Util.html_escape(final_value) if escape 
      attrs << %(#{key}="#{final_value}") 
      end 
     end 
     " #{attrs.sort * ' '}".html_safe unless attrs.empty? 
     end 
    end 

затем использовать <% = form_for (@member,: данные => { 'соблюдать' => ''}) сделать | е | %>, который будет производить html

<form accept-charset="UTF-8" action="/members" class="new_member" data-abide="" id="new_member" method="post"> 
0

Ответ Josh Lehmans помог мне. Вот полный рабочий пример формы.

<%= form_for @customer, html: {"data-abide" => ''} do |f| %> 
    <%= f.text_field :name, placeholder: "Your name", :required => '' %> 
    <%= content_tag(:small, "This field is required", class: "error") %> 
<% end %> 
1

Я использую его в моих form_for помощников, как в следующем примере:

<%= form_for @user, html: { :"data-abide" => "" } do |f| %> 

Это будет производить следующий HTML и останься будет работать:

<form accept-charset="UTF-8" action="/users" class="new_user" data-abide="" id="new_user" method="post" novalidate="novalidate"> 
Смежные вопросы