Bird
Raised Fist0
Ruby on Railsframework~10 mins

Action methods in Ruby on Rails - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define an action method named show in a Rails controller.

Ruby on Rails
class ProductsController < ApplicationController
  def [1]
    # code to show a product
  end
end
Drag options to blanks, or click blank then click option'
Ashow
Bdisplay
Cindex
Drender
Attempts:
3 left
💡 Hint
Common Mistakes
Using a non-standard method name like display.
Confusing show with index which lists all items.
2fill in blank
medium

Complete the code to render the index view in the index action method.

Ruby on Rails
class ArticlesController < ApplicationController
  def index
    @articles = Article.all
    [1]
  end
end
Drag options to blanks, or click blank then click option'
Arender 'show'
Bredirect_to articles_path
Credirect_to index
Drender :index
Attempts:
3 left
💡 Hint
Common Mistakes
Using redirect_to instead of render when showing a view.
Rendering the wrong template like 'show'.
3fill in blank
hard

Fix the error in the create action by completing the code to save a new Post.

Ruby on Rails
class PostsController < ApplicationController
  def create
    @post = Post.new(post_params)
    if @post.[1]
      redirect_to @post
    else
      render :new
    end
  end
end
Drag options to blanks, or click blank then click option'
Aupdate
Bsave!
Csave
Dcreate
Attempts:
3 left
💡 Hint
Common Mistakes
Using save! which raises errors instead of returning false.
Using create which is a class method, not an instance method.
4fill in blank
hard

Fill both blanks to define a destroy action that finds a User by id and deletes it.

Ruby on Rails
class UsersController < ApplicationController
  def destroy
    @user = User.[1](params[:[2]])
    @user.destroy
    redirect_to users_path
  end
end
Drag options to blanks, or click blank then click option'
Afind
Bid
Cfind_by
Duser_id
Attempts:
3 left
💡 Hint
Common Mistakes
Using find_by without specifying the correct key.
Using user_id instead of id in params.
5fill in blank
hard

Fill all three blanks to define an update action that finds a Comment, updates it with permitted params, and redirects to the comment.

Ruby on Rails
class CommentsController < ApplicationController
  def update
    @comment = Comment.[1](params[:[2]])
    if @comment.[3](comment_params)
      redirect_to @comment
    else
      render :edit
    end
  end
end
Drag options to blanks, or click blank then click option'
Afind
Bid
Cupdate
Dsave
Attempts:
3 left
💡 Hint
Common Mistakes
Using save instead of update which requires manual attribute assignment.
Using wrong param key like comment_id instead of id.

Practice

(1/5)
1. What is the primary role of an action method in a Rails controller?
easy
A. To respond to user requests by processing data and rendering views or redirects
B. To define database schema and migrations
C. To style the HTML pages with CSS
D. To manage server configuration settings

Solution

  1. Step 1: Understand the purpose of action methods

    Action methods in Rails controllers handle user requests by processing data and deciding what to show next.
  2. Step 2: Differentiate from other roles

    Database schema, styling, and server settings are handled elsewhere, not in action methods.
  3. Final Answer:

    To respond to user requests by processing data and rendering views or redirects -> Option A
  4. Quick Check:

    Action methods handle requests = A [OK]
Hint: Action methods handle requests and responses in controllers [OK]
Common Mistakes:
  • Confusing action methods with database migrations
  • Thinking action methods style pages
  • Assuming action methods configure servers
2. Which of the following is the correct syntax to define an action method named show in a Rails controller?
easy
A. function show() {}
B. def show; end
C. show() => {}
D. def show() {}

Solution

  1. Step 1: Recall Ruby method syntax in Rails controllers

    Rails controller actions are Ruby methods defined with def method_name; end.
  2. Step 2: Identify correct syntax

    def show; end uses correct Ruby syntax without parentheses, which is common in Rails.
  3. Final Answer:

    def show; end -> Option B
  4. Quick Check:

    Ruby method syntax = A [OK]
Hint: Rails actions use Ruby method syntax: def name; end [OK]
Common Mistakes:
  • Using JavaScript function syntax
  • Adding parentheses with braces in Ruby
  • Mixing arrow functions with Ruby
3. Given this Rails controller action:
def index
  @users = User.all
end

What will @users contain after this action runs?
medium
A. A hash of user attributes
B. A single User record
C. An array of all User records from the database
D. An empty array

Solution

  1. Step 1: Understand User.all in Rails

    User.all fetches all records from the users table as an ActiveRecord collection (like an array).
  2. Step 2: Determine the content of @users

    It will contain all user records, not just one or empty or a hash.
  3. Final Answer:

    An array of all User records from the database -> Option C
  4. Quick Check:

    User.all returns all records = D [OK]
Hint: User.all fetches all records as a collection [OK]
Common Mistakes:
  • Thinking User.all returns a single record
  • Assuming it returns a hash
  • Confusing with empty array if no users exist
4. Identify the error in this Rails controller action:
def create
  @user = User.new(params[:user])
  if @user.save
    redirect_to @user
  else
    render :new
  end
end
medium
A. Missing an end keyword
B. Using render instead of redirect_to in else
C. Redirecting to @user instead of a URL string
D. Using params[:user] directly without strong parameters

Solution

  1. Step 1: Check parameter handling in create action

    Rails requires strong parameters to whitelist allowed attributes for security.
  2. Step 2: Identify misuse of params[:user]

    Using params[:user] directly is unsafe and will cause an error in modern Rails.
  3. Final Answer:

    Using params[:user] directly without strong parameters -> Option D
  4. Quick Check:

    Strong parameters needed = B [OK]
Hint: Always use strong parameters for mass assignment [OK]
Common Mistakes:
  • Ignoring strong parameters security
  • Thinking redirect_to needs a URL string only
  • Missing end keyword (not true here)
5. You want to add a custom action method publish to your PostsController that changes a post's status to 'published' and then redirects to the post's page. Which code snippet correctly implements this?
hard
A. def publish @post = Post.find(params[:id]) @post.status = 'published' @post.save redirect_to post_path(@post) end
B. def publish @post = Post.find(params[:id]) @post.status = 'published' redirect_to post_path(@post) end
C. def publish @post = Post.find(params[:id]) @post.status = 'published' redirect_to @post end
D. def publish @post = Post.find(params[:id]) @post.save(status: 'published') redirect_to @post end

Solution

  1. Step 1: Find the post by ID

    All options correctly find the post using Post.find(params[:id]).
  2. Step 2: Update the post's status and save changes

    def publish @post = Post.find(params[:id]) @post.status = 'published' redirect_to @post end changes status but does not save. def publish @post = Post.find(params[:id]) @post.status = 'published' redirect_to post_path(@post) end changes status but does not save. def publish @post = Post.find(params[:id]) @post.status = 'published' @post.save redirect_to post_path(@post) end changes status, calls save, then redirects. def publish @post = Post.find(params[:id]) @post.save(status: 'published') redirect_to @post end incorrectly uses save(status: 'published') which is invalid.
  3. Step 3: Redirect to the post's show page

    Options A, C, and D redirect correctly. def publish @post = Post.find(params[:id]) @post.status = 'published' redirect_to post_path(@post) end uses post_path(@post) which is also correct.
  4. Final Answer:

    def publish @post = Post.find(params[:id]) @post.status = 'published' @post.save redirect_to post_path(@post) end -> Option A
  5. Quick Check:

    Change attribute + save + redirect = C [OK]
Hint: Change attribute, save record, then redirect [OK]
Common Mistakes:
  • Forgetting to save after changing attribute
  • Using invalid save syntax with parameters
  • Not redirecting after update
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