Simple Form

Dec 25, 2021

Summary

GitHub
Manual

Common Scenarios

The implementation of dropdown lists in Simple Form leverages the collection feature. Here are the changes that I made in my related model, controller and view

Model

class Stuff < ApplicationRecord
  belongs_to :user, required: false
  has_one :category
end

Controller

  # GET /stuffs/new
  def new
    @stuff = Stuff.new
    @categories = Category.all
  end

View

<%= f.input :category_id, as: :select, collection: @categories %>

Overriding the default id

There are two common ways of overriding the default css id in Simple Form. The first way is just to assign it to an id

<%= f.input :category_name, id: 'category_name' %>

The other way is to override it with input_html

<%= f.input :bunch, collection: @bunches, input_html: { id: 'my_bunches_dropdown'} %>

Collection of checkboxes

Let's say you have a model of Posts that has a "has many" relationship with a model of comments and you wanted to create a form with checkboxes associated with those comments. Here's how you'd set it up

<%= simple_form_for(@post) do |f| %>

  <table class="table">
  <%= f.collection_check_boxes :commentss_list, @post.comments, :id, :name do |builder| %>
    <tr>
      <td><%= builder.check_box %></td>
      <td><%= builder.label %></td>
    <tr>
  <% end %>
  </table>
<% end %>

You can also customize the id of the checkboxes by doing the following:

      <td><%= builder.check_box id: "comment_#{builder.object.id}_checkbox" %></td>

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.