Hur skapar man ett enkelt formulär i Rails med hjälp av form_with?

Oct 09, 2025Lämna ett meddelande

I den dynamiska världen av webbutveckling framstår Ruby on Rails som ett kraftfullt och effektivt ramverk för att bygga webbapplikationer. En av de grundläggande aspekterna av många webbapplikationer är förmågan att samla in användardata via formulär. I det här blogginlägget kommer jag att leda dig genom processen att skapa ett enkelt formulär i Rails med hjälp avform_withhjälpare. Som Rails-leverantör har jag haft förmånen att arbeta med ett flertal projekt där formulär spelar en avgörande roll, och jag är glad att dela mina insikter med dig.

Förståelseform_withi Rails

Innan vi dyker in i att skapa ett formulär, låt oss ta en stund för att förstå vadform_withär.form_withär en hjälpmetod i Rails som förenklar processen att skapa HTML-formulär. Det ger ett flexibelt och intuitivt sätt att generera formulär som är både semantiskt korrekta och lätta att underhålla. Oavsett om du skapar ett enkelt kontaktformulär eller ett komplext formulär i flera steg,form_withhar du täckt.

Konfigurera en ny Rails-applikation

Om du inte redan har gjort det måste du konfigurera en ny Rails-applikation. Öppna din terminal och kör följande kommando:

rails ny simple_form_app cd simple_form_app

Detta kommer att skapa en ny Rails-applikation med namnetsimple_form_appoch navigerar dig till programkatalogen.

Generera en styrenhet och en vy

Därefter genererar vi en kontroller och en vy för att hantera vårt formulär. Kör följande kommando i din terminal:

skenor genererar styrenhet Former nya

Detta kommer att generera enFormsControllermed ennyaction och en motsvarande vyfil påapp/views/forms/new.html.erb.

Skapa formuläret med hjälp avform_with

Nu, låt oss öppnaapp/views/forms/new.html.erbfil och skapa vårt formulär med hjälp avform_with. Här är ett exempel på ett enkelt kontaktformulär:

<%= form_with(url: "/submit_form", metod: :post) gör |form| %> <div> <%= form.label :name %> <%= form.text_field :name %> </div> <div> <%= form.label :email %> <%= form.email_field :email %> </div> <div> <%= form.label :meddelande %> <%= form.text_area %> formulär %mes_div> <divmes_div> "Skicka" %> </div> <% end %>

I det här exemplet använder viform_withatt skapa ett formulär som skickar sina data till/skicka_formulärURL med hjälp avPOSTAmetod. Inuti formulärblocket använder vi olika formulärhjälpmetoder för att skapa inmatningsfält för användarens namn, e-post och meddelande, samt en skicka-knapp.

49E2 Steel RailBS 100A Rail

Hantera formulärinlämningen

För att hantera formulärinlämningen måste vi lägga till en rutt och en åtgärd i vårFormsController. Öppnaconfig/routes.rbfil och lägg till följande rad:

post '/submit_form', till: 'forms#submit'

Detta kommer att kartlägga/skicka_formulärURL tillöverlämnaåtgärd iFormsController. Öppna nuapp/controllers/forms_controller.rbfil och lägg till följande åtgärd:

def submit # Här kan du bearbeta formulärdata, till exempel, spara dem i databasen namn = params[:name] email = params[:email] meddelande = params[:meddelande] # För närvarande kommer vi bara att skriva ut data till konsolen lägger "Namn: #{name}" sätter "E-post: #{email}" sätter "Meddelande 'root}_" omdirigering_meddelande: skickat_meddelande: framgångsrikt_meddelande! avsluta

I den här åtgärden hämtar vi formulärdata frånparamshash och skriva ut den till konsolen. I ett verkligt program skulle du vanligtvis spara data till en databas eller skicka ett e-postmeddelande. Efter att ha bearbetat formulärdata omdirigerar vi användaren till rotsökvägen med ett framgångsmeddelande.

Styling av formuläret

För att göra vårt formulär mer presentabelt kan vi lägga till några CSS-stilar. Öppnaapp/assets/stylesheets/application.cssfil och lägg till följande stilar:

form div { margin-bottom: 10px; } form label { display: block; margin-bottom: 5px; } formulärinmatning[type="text"], formulärinmatning[type="e-post"], formulärtextområde { bredd: 100%; stoppning: 5px; kantlinje: 1px fast #ccc; border-radie: 3px; } form input[type="submit"] { bakgrundsfärg: #007BFF; färg: vit; stoppning: 10px 20px; gräns: ingen; border-radie: 3px; markör: pekare; } form input[type="submit"]:hover { bakgrundsfärg: #0056b3; }

Dessa stilar kommer att ge vår form ett rent och professionellt utseende.

Lägger till validering i formuläret

För att säkerställa att användaren anger giltig data kan vi lägga till validering i vårt formulär. I Rails kan vi använda ActiveRecord-valideringar för att validera data innan vi sparar dem i databasen. Men eftersom vi inte använder en modell i det här exemplet kan vi använda JavaScript för att utföra grundläggande validering på klientsidan. Här är ett exempel på hur du lägger till validering i vårt formulär med JavaScript:

document.addEventListener('DOMContentLoaded', function() { const form = document.querySelector('form'); form.addEventListener('submit', function(event) { const name = document.querySelector('input[name="name"]').value; const email = document. = document.querySelector('textarea[name="meddelande"]').värde;

Denna JavaScript-kod förhindrar att formuläret skickas om något av de obligatoriska fälten är tomma.

Slutsats

Skapa ett enkelt formulär i Rails med hjälp avform_withär en enkel process. Genom att följa stegen som beskrivs i det här blogginlägget kan du skapa ett funktionellt formulär som samlar in användardata och hanterar formulärinlämningar. Som Rails-leverantör har jag sett kraften och flexibiliteten hos Rails när det gäller att bygga webbapplikationer, och jag hoppas att den här guiden har varit till hjälp för dig.

Om du är intresserad av att köpa högkvalitativa skenor för dina projekt, erbjuder vi ett brett utbud av alternativ, inklusiveGOST Standard KP140 Kranskena,49E2 Stålskena, ochBS 100A skena. Våra skenor är designade för att möta de högsta standarderna för kvalitet och prestanda, och vi är angelägna om att ge utmärkt kundservice. Om du har några frågor eller vill diskutera dina krav, tveka inte att kontakta oss för en upphandlingskonsultation.

Referenser

  • Rails Guides: https://guides.rubyonrails.org/
  • Mozilla Developer Network: https://developer.mozilla.org/