web-dev-qa-db-ja.com

simple_formのフォームタグにデータ属性を追加するにはどうすればよいですか?

フォームの検証にgarlic.jsを使用しています。 Garlic.jsは、フォームタグdata-attributeを追加することをお勧めします。

これが私が生成する必要があるものです:

<form data-validate="parsley">

フォームタグでこのデータ属性を生成する際に問題が発生します。私はすべてを試しましたが、何も機能しませんでした。誰かがこれに対する解決策を持っていますか?

16
Renato Carvalho

これを試して:

<%= simple_form_for @entity, :html => {:"data-validate" => 'parsley'} do |f| %>
    <!-- inputs -->
<% end %>

更新

以下のコメントから、フォームに値のないHTML5データ属性を含めるには、次のことを試してください。

<%= simple_form_for @entity, :html => {:"other-data-value" => ''} do |f| %> 

属性を空の文字列に設定することにより、フォームヘルパーは属性のみをレンダリングします。

24
Dan Fairaizl

データハッシュを渡すことでデータ属性を直接設定できますが、他のすべてのHTMLオプションはHTMLキーでラップする必要があります。例:

<%= form_for(@post, data: { validate: "parsley" }, html: { name: "go" }) do |f| %>
   ...
<% end %>

このために生成されるHTMLは次のようになります。

<form action='http://www.example.com' method='post' data-validate='parsley' name='go'>
  ...
 </form>

api.rubyonrails.org

2
mmsilviu

新しいバージョンのRails(4)または新しいバージョンのParsley(2)のいずれかを使用して、2016年にこれに遭遇した人は、次のことを行う必要があります。

まず、新しいバージョンでデータ属性を使用してパセリをアクティブ化するには、パセリのバージョン1のdata-parsley-validateの代わりにdata-validate="parsley"を追加します。それをRails form_forで機能させることができます。

パセリを使用していない場合でも、これはRails 4にデータ属性を挿入する方法です。

<%= form_tag '/login', :"data-parsley-validate" => '' do %>
    <!-- inputs -->
<% end %>

したがって、基本的に違いはhtml=>{}ハッシュを使用しないことです。そのトリックが機能するかどうかを確認するためにそれを試しましたが、少なくとも私にとっては、マークアップは次のようになりました。

<form action="/login" method="post" html="{:data-parsley-validate}">
    <!-- inputs -->
</form>

しかし、対応する値として空の文字列を持つシンボルとしてデータ属性をそこに直接配置するだけで、完全に機能しました。これは私が受け取ったマークアップです。

<form action="/login" method="post" data-parsley-validate>
    <!-- inputs -->
</form>

言い換えれば、その完璧です。これが、Rails 4を使用してform_tagのデータ属性を取得する方法です。

0
jacurtis