Bird
Raised Fist0
Ruby on Railsframework~20 mins

Flash messages in Ruby on Rails - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Flash Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
How does the flash behave after a redirect in Rails?
Consider a Rails controller action that sets flash[:notice] = 'Saved!' and then redirects to another action. What will the user see on the redirected page if it displays flash[:notice]?
AThe message 'Saved!' will be displayed only if the redirected page sets <code>flash.now[:notice]</code>.
BThe message 'Saved!' will be displayed repeatedly on every page until the session ends.
CThe message 'Saved!' will not be displayed on the redirected page.
DThe message 'Saved!' will be displayed once on the redirected page.
Attempts:
2 left
💡 Hint
Think about how flash messages persist only for one request after a redirect.
📝 Syntax
intermediate
2:00remaining
Which code correctly sets a flash message that appears only on the current page?
You want to show a flash message that appears immediately on the current page without redirecting. Which code snippet correctly does this in a Rails controller?
Aflash[:alert] = 'Error occurred'; render :edit
Bflash[:alert] = 'Error occurred'; redirect_to edit_path
Cflash.now[:alert] = 'Error occurred'; render :edit
Dflash.now[:alert] = 'Error occurred'; redirect_to edit_path
Attempts:
2 left
💡 Hint
Use flash.now when rendering without redirecting.
🔧 Debug
advanced
2:00remaining
Why does this flash message not appear after redirect?
Given this controller code:
def create
  flash.now[:notice] = 'Created successfully'
  redirect_to root_path
end

Why will the flash message not appear on the redirected page?
Ruby on Rails
def create
  flash.now[:notice] = 'Created successfully'
  redirect_to root_path
end
A<code>flash.now</code> messages do not persist across redirects, so the message is lost.
B<code>redirect_to</code> clears all flash messages before redirecting.
CThe flash message key should be <code>:alert</code> instead of <code>:notice</code>.
DThe message will appear only if the redirected page explicitly calls <code>flash.keep</code>.
Attempts:
2 left
💡 Hint
Remember the difference between flash and flash.now.
❓ state_output
advanced
2:00remaining
What is the content of flash after multiple redirects?
Consider this sequence in a Rails controller:
flash[:info] = 'Step 1'
redirect_to step_two_path

# In step_two action:
flash[:info] = 'Step 2'
redirect_to step_three_path

# In step_three action:
# What is flash[:info]?
Ruby on Rails
flash[:info] = 'Step 1'
redirect_to step_two_path

# step_two action
flash[:info] = 'Step 2'
redirect_to step_three_path

# step_three action
flash[:info]
A'Step 1'
B'Step 2'
Cnil
DAn error is raised because flash is reset after each redirect
Attempts:
2 left
💡 Hint
Each redirect sets a new flash message that overwrites the previous one.
🧠 Conceptual
expert
3:00remaining
Why should flash messages not be used for sensitive data?
Flash messages in Rails are stored in the session and displayed to users. Why is it a bad idea to store sensitive information (like passwords or personal data) in flash messages?
AFlash messages are stored in cookies or session and can be exposed to users or logged, risking data leaks.
BFlash messages automatically encrypt sensitive data, so storing sensitive info is safe.
CFlash messages are deleted immediately and never reach the user, so sensitive data is safe.
DFlash messages are only visible to admins, so sensitive data is protected.
Attempts:
2 left
💡 Hint
Think about where flash data is stored and who can access it.

Practice

(1/5)
1. What is the main purpose of flash messages in a Rails application?
easy
A. To show temporary messages to users after actions like form submissions
B. To permanently store user data in the session
C. To style the webpage with CSS dynamically
D. To handle database transactions automatically

Solution

  1. Step 1: Understand flash message role

    Flash messages provide feedback to users about actions they performed, like success or error notices.
  2. Step 2: Differentiate from other features

    They are temporary and do not store data permanently or affect styling or database transactions.
  3. Final Answer:

    To show temporary messages to users after actions like form submissions -> Option A
  4. Quick Check:

    Flash messages = temporary user feedback [OK]
Hint: Flash messages show quick feedback after user actions [OK]
Common Mistakes:
  • Thinking flash stores data permanently
  • Confusing flash with CSS or styling
  • Assuming flash manages database
2. Which of the following is the correct way to set a flash notice in a Rails controller?
easy
A. flash.notice = "Saved successfully"
B. flash->notice = "Saved successfully"
C. flash[:notice] = "Saved successfully"
D. flash('notice') = "Saved successfully"

Solution

  1. Step 1: Recall flash syntax in Rails

    Flash messages are set using the hash-like syntax with symbols, e.g., flash[:notice] = "message".
  2. Step 2: Identify correct syntax

    Options A, B, and C use invalid Ruby or Rails syntax for flash assignment.
  3. Final Answer:

    flash[:notice] = "Saved successfully" -> Option C
  4. Quick Check:

    flash[:key] = message [OK]
Hint: Use flash[:notice] = "message" to set flash [OK]
Common Mistakes:
  • Using dot notation instead of brackets
  • Using parentheses incorrectly
  • Using arrow syntax which is invalid
3. Given this controller code snippet:
def create
  if @post.save
    flash[:notice] = "Post created!"
    redirect_to posts_path
  else
    flash[:alert] = "Error creating post"
    render :new
  end
end

What will happen to the flash messages if the post fails to save?
medium
A. The notice message will be shown on the posts index page
B. The alert message will be shown on the new post form page
C. No flash message will be shown because render does not keep flash
D. Both notice and alert messages will be shown on the new page

Solution

  1. Step 1: Understand flash behavior with redirect and render

    Flash messages persist for one request. Redirect clears flash after showing it. Render keeps the current request, so flash remains.
  2. Step 2: Analyze code flow on failure

    On failure, flash[:alert] is set and render :new is called, so alert message shows on the new form page.
  3. Final Answer:

    The alert message will be shown on the new post form page -> Option B
  4. Quick Check:

    flash with render = message shown immediately [OK]
Hint: Flash with render shows message immediately; with redirect, next page [OK]
Common Mistakes:
  • Assuming flash clears on render
  • Thinking notice shows on failure
  • Confusing redirect and render flash behavior
4. Identify the error in this Rails controller code snippet:
def update
  if @user.update(user_params)
    flash[:notice] = "Profile updated"
    render redirect_to profile_path
  else
    flash[:alert] = "Update failed"
    redirect_to edit_profile_path
  end
end
medium
A. Using render with redirect_to together is incorrect syntax
B. flash[:notice] should be flash.notice
C. redirect_to cannot be used inside an if statement
D. flash messages must be set after redirect_to

Solution

  1. Step 1: Check render and redirect usage

    In Rails, render and redirect_to are separate methods. You cannot combine them like render redirect_to.
  2. Step 2: Identify correct usage

    To redirect, use redirect_to path. To render a template, use render :template_name. Mixing both causes syntax error.
  3. Final Answer:

    Using render with redirect_to together is incorrect syntax -> Option A
  4. Quick Check:

    render and redirect_to are separate calls [OK]
Hint: Use either render or redirect_to, never both together [OK]
Common Mistakes:
  • Combining render and redirect_to
  • Using dot notation for flash
  • Setting flash after redirect instead of before
5. You want to show a flash message that persists for the current and the next request (for example, after a redirect and then another page load). Which method should you use in Rails?
hard
A. Use flash.now to set the message
B. Use flash.delete to save the message
C. Use flash.clear to keep the message
D. Use flash.keep to preserve the flash for another request

Solution

  1. Step 1: Understand flash persistence

    By default, flash messages last for one request. flash.now shows message only for current request.
  2. Step 2: Use flash.keep to extend flash life

    flash.keep preserves the flash message for an additional request, so it appears again after redirect.
  3. Final Answer:

    Use flash.keep to preserve the flash for another request -> Option D
  4. Quick Check:

    flash.keep extends flash life beyond one request [OK]
Hint: Use flash.keep to keep flash message for next request too [OK]
Common Mistakes:
  • Using flash.now which lasts only current request
  • Confusing flash.clear with preserving messages
  • Using flash.delete which removes messages
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard