2. Which of the following is the correct syntax to create a form using form_with for a model instance @post with normal (non-AJAX) submission?
easy
A. form_with @post, remote: true do |form|
B. form_with model: @post, local: true do |form|
C. form_with model: @post, remote: true do |form|
D. form_with url: posts_path, method: :get do |form|
Solution
Step 1: Identify how to disable AJAX
Using local: true disables AJAX and makes the form submit normally.
Step 2: Check the correct syntax for model binding
The correct syntax is form_with model: @post, local: true do |form|.
Final Answer:
form_with model: @post, local: true do |form| -> Option B
Quick Check:
local: true disables AJAX [OK]
Hint: Use local: true for normal form submission [OK]
Common Mistakes:
Omitting local: true for non-AJAX forms
Using remote: true which enables AJAX
Using method :get for form submission instead of post
3. Given the following code snippet, what will be the HTTP method used when submitting the form?
form_with model: @article do |form|
# form fields here
end
medium
A. DELETE if @article is persisted, POST if new
B. GET always
C. POST if @article is a new record, PATCH if it is persisted
D. PUT always
Solution
Step 1: Understand form_with method behavior
When linked to a model, form_with uses POST for new records and PATCH for existing records.
Step 2: Apply to @article
If @article is new, method is POST; if persisted, method is PATCH.
Final Answer:
POST if @article is a new record, PATCH if it is persisted -> Option C
Quick Check:
form_with method depends on record state [OK]
Hint: New record = POST, existing record = PATCH [OK]
Common Mistakes:
Assuming GET is used for form submission
Confusing PUT with PATCH
Thinking DELETE is used automatically
4. Identify the error in this form_with usage:
form_with model: @user, local: true do
text_field :name
end
medium
A. Missing block variable for form builder
B. local: true is invalid option
C. text_field should be text_field_tag
D. model: @user should be url: user_path(@user)
Solution
Step 1: Check block syntax
The block must accept a form builder variable, e.g., do |form|.
Step 2: Check usage of form builder methods
Inside the block, form builder methods like form.text_field :name must be called.
Final Answer:
Missing block variable for form builder -> Option A
Quick Check:
Block needs form variable for fields [OK]
Hint: Always use |form| block variable with form_with [OK]
Common Mistakes:
Omitting the block variable
Calling form builder methods without prefix
Confusing text_field with text_field_tag
5. You want to create a form for a new @comment that submits normally (no AJAX), includes a text area for content, and a submit button labeled 'Post Comment'. Which of the following is the correct complete form_with usage?
hard
A. form_with @comment do |form|
form.text_field :content
form.submit
end
B. form_with model: @comment, remote: true do |form|
form.text_area :content
form.submit 'Post Comment'
end
C. form_with url: comments_path, method: :post do |form|
form.text_area :content
form.submit 'Post Comment'
end
D. form_with model: @comment, local: true do |form|
form.text_area :content
form.submit 'Post Comment'
end
Solution
Step 1: Ensure normal submission
Use local: true to disable AJAX and submit normally.
Step 2: Use correct form builder methods
Use form.text_area :content for the text area and form.submit 'Post Comment' for the button label.
Final Answer:
form_with model: @comment, local: true do |form|
form.text_area :content
form.submit 'Post Comment'
end -> Option D
Quick Check:
local: true + text_area + submit label [OK]
Hint: Use local: true and form builder methods for fields [OK]
Common Mistakes:
Using remote: true which enables AJAX
Using text_field instead of text_area for content
Omitting the submit button label
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.