Web Development Form Handling and Update Methods Overview

Slide Note
Embed
Share

Exploring various form handling and update methods in web development including examples of form structures, Rails form helpers, customization approaches, post-action methods, and security considerations.


Uploaded on Oct 05, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Simple Form <form action="/product/update" method="post"> Product: <input type="text" name="product"/><br /> Price: <input type="text" name="price" value="49.95"/><br /> <input type="submit" value="Submit"/> </form> CS 142 Lecture Notes: Forms Slide 1

  2. Rails Form Helpers Describes type, provides initial values <%= form_for(@student, method: :post, url: {action: :update, id: @student.id}) do |form| %> <%= form.text_field(:name) %> <%= form.text_field(:birth) %> <%= form.submit "Modify Student" %> <% end %> Object representing form <form action="/student/update/4" method="post"> <input id="student_name" name="student[name] size="30" type="text" value="Chen" /> <input id="student_birth" name="student[birth] size="30" type="text" value="1990-02-04" /> <input name="commit" type="submit value="Modify Student" /> </form> Slide 2

  3. Customize Format <%= form_for(@student, method: :post, url: {action: :update, id: @student.id}) do |form| %> <table class="form"> <tr> <td><%= form.label(:name, "Name:")%></td> <td><%= form.text_field(:name) %></td> </tr> <tr> <td><%= form.label(:birth, "Date of birth:")%></td> <td><%= form.text_field(:birth) %></td> </tr> ... <table> <%= form.submit "Modify Student" %> <% end %> CS 142 Lecture Notes: Forms Slide 3

  4. Post Action Method Hash with all of form data def update @student = Student.find(params[:id]) ]) @student.name = params[:student][:name] @student.birth = params[:student][:birth] @student.gpa = params[:student][:gpa] @student.grad = params[:student][:grad] if @student.save then redirect_to(:action => :show) else render(:action => :edit) end end Redirects on success Redisplay form on error CS 142 Lecture Notes: Forms Slide 4

  5. More Compact Approach def update @student = Student.find(params[:id]) if @student.update(params[:student]) then redirect_to(:action => :show) else render(:action => :edit) end end Security checks in Rails 4 cause update to fail CS 142 Lecture Notes: Forms Slide 5

  6. Rails 4 Pattern def update @student = Student.find(params[:id]) if @student.update(student_params( params[:student])) then redirect_to(:action => :show) else render(:action => :edit) end end Creates new hash containing only specified elements private def student_params(params) return params.permit(:name, :birth, :gpa, :grad) end CS 142 Lecture Notes: Forms Slide 6

  7. Creating New Record def create @student = Student.new(student_params( params[:student]) if @student.save() then redirect_to(:action => :show) else render(:action => :edit) end end CS 142 Lecture Notes: Forms Slide 7

  8. Validation (in Model) Built-in validator class Student < ActiveRecord::Base validates_format_of :birth, :with => /\d\d\d\d-\d\d-\d\d/, :message => "must have format YYYY-MM-DD" Custom validation method def validate_gpa if (gpa < 0) || (gpa > 4.0) then errors.add(:gpa, "must be between 0.0 and 4.0") end end Saves error info validate :validate_gpa end CS 142 Lecture Notes: Forms Slide 8

  9. Error Messages <% @student.errors.full_messages.each do |msg| %> <p><%= msg %></p> <% end %> <%= form_for(@student, method: :post, url: {action => :update, id: @student.id}) do |form| %> ... <%= form.label(:birth, "Date of birth:")%> <%= form.text_field(:birth) %> ... <% end %> CS 142 Lecture Notes: Forms Slide 9

  10. File Uploads with Rails <%= form_for(:student, method: ...) do |form| %> ... <%= form.file_field(:photo) %> ... <% end %> In form post method: params[:student][:photo].read() params[:student][:photo].original_filename CS 142 Lecture Notes: Forms Slide 10

  11. CS 142 Lecture Notes: Cookies Slide 11

Related