Est-il possible d'utiliser un formulaire simple sans modèle?
Réponses
Trop de publicités? Vous pouvez utiliser :symbol
comme premier argument.
<%= simple_form_for :user, :url => '/users' do |f| %>
<%= f.text_field :name %>
<% end %>
Il va sortir le suivant.
<form method="post" class="simple_form user" action="/users" accept-charset="UTF-8">
...
<input type="text" size="30" name="user[name]" id="user_name">
</form>
Malheureusement, simple_form repose sur l'utilisation d'un modèle. En gros, il serait bien d’avoir quelque chose comme les méthodes simple_form_tag et input_tag équivalentes à leurs assistants rails * _tag. Jusque-là, le travail est facile.
Utilisez un symbole à la place de la classe dans le formulaire et transmettez explicitement la valeur pour empêcher simple_form d’essayer d’accéder aux propriétés du modèle.
<%= simple_form_for :user, :url => '/users' do |f| %>
<%= f.text_field :name, input_html: { value: nil } %>
<% end %>
Cela évitera l'erreur undefined method 'name' for User
.
Vous pouvez également passer un :symbol
au lieu de @object
comme argument de simple_form_for
.
<%= simple_form_for :email, :url => '/post_email' do |f| %>
<%= f.input :subject, :as => :string %>
<% end %>
Ce qui donnerait:
<form method="post" class="simple_form email" action="/post_email" accept-charset="UTF-8">
...
<input type="text" size="30" name="email[subject]" id="email_subject">
</form>
S'il vous plaît être conscient des inconvénients suivants:
- Vous ne pourrez pas profiter de la validation automatique des modèles
- Besoin de définir explicitement
:url
et le type de chaqueinput