2017-10-31 4 views
0

Ich verwende eine Front-End-Vorlage in meiner Rails-Anwendung, die Schaltflächen mit CSS formatiert, indem sie sie aus dem Tag auswählt.Erstellen eines Schaltflächenelements anstelle eines Eingabeelements mit Rails-Helfern

Das Problem besteht darin, dass Rails Form Helpers Schaltflächen rendern, indem HTML-Code mit Tags anstelle von Tags erstellt wird. Deshalb, wenn Sie den folgenden html.erb Code ausführen:

<%= simple_form_for @waiter do |f| %> 
    <%= f.input_field :email %> 
    <%= f.button :submit, "My button" %> 
<% end %> 

Es macht die Taste als:

<input type="submit" name="commit" value="My button" class="btn btn-default" data-disable-with="My button"> 

Und ich möchte eine HTML-Code erzeugen, für die Schaltfläche, die ähnelt:

<button relevant_attributes="relevant values">My button</button> 

ich habe bisher ohne Erfolg versucht:

  1. Hinzufügen einer CSS-ID zum Eingabe-Tag und Ändern der Vorlagen-Stylesheets zum Reproduzieren der Schaltflächenstile (Ich habe festgestellt, dass dies aus Gründen, die hier schwer zu erklären sind, keine effektive Option ist).
  2. Verwenden von Vanilla Rails Form Helpers anstelle der simple_form Einsen (rendert auch Eingabe-Tag-Elemente).

Die einzige Lösung ist bisher direkt ein HTML-Button-Element zu erstellen (wie unten) und es zu einer onClick JS Ereignisbindung, die einen Ajax-Request auslöst, die das Formular über JS übermittelt:

<%= simple_form_for @waiter do |f| %> 
    <%= f.input_field :email %> 
    <button id="my-button">My button</button> 
<% end %> 

Die vorliegende Lösung scheint nicht sehr elegant zu sein. Kann jemand eine bessere Lösung empfehlen? Ist es möglich, Knopfelemente durch Rails-Helfer zu produzieren?

Antwort

1

können Sie verwenden button_tag

Es type="submit" sein sollte, die Form von Standard

einreichen
Verwandte Themen